typedef int (*subsession_reply_callback) (int result, void *cb_data);
int subsession_add_user(int session_uid, int user, subsession_reply_callback cb, void *cb_data);
int subsession_remove_user(int session_uid, int user, subsession_reply_callback cb, void *cb_data);
-int subsession_switch_user(int session_uid, int prev_user, int next_user, subsession_reply_callback cb, void *cb_data);
+int subsession_switch_user(int session_uid, int next_user, subsession_reply_callback cb, void *cb_data);
int subsession_add_user_wait_done(int session_uid, int user);
int subsession_remove_user_wait_done(int session_uid, int user);
signal_client_data_t *signal_client_data = (signal_client_data_t*)client_data;
int client_session_uid = 0;
- int client_prev_user = 0;
int client_next_user = 0;
- maybe_g_variant_get_int_(signal_client_data->params, "(iii)", &client_session_uid, &client_prev_user, &client_next_user);
+ maybe_g_variant_get_int_(signal_client_data->params, "(ii)", &client_session_uid, &client_next_user);
GVariant *params = (GVariant *)parameters;
maybe_g_variant_get_int_(params, "(ixii)", ¶ms_session_uid, ¶ms_switch_id, ¶ms_prev_user, ¶ms_next_user);
gboolean all_ok = (client_session_uid == params_session_uid) &&
- (client_prev_user == params_prev_user) &&
- (client_next_user == params_next_user);
+ (client_next_user == params_next_user);
if( all_ok) {
return COMPARATOR_RESULT_SAME_;
return ;
}
- subsession_event_info event_info = {0};
+ subsession_event_info event_info = {0};
event_info.switch_user.event = SUBSESSION_SWITCH_USER_WAIT;
maybe_g_variant_get_void_(parameters, "(ixii)",
return method_call_result;
}
-EXPORT_API int subsession_switch_user(int session_uid, int prev_user, int next_user, subsession_reply_callback cb, void *cb_data) {
+EXPORT_API int subsession_switch_user(int session_uid, int next_user, subsession_reply_callback cb, void *cb_data) {
g_mutex_lock (&switch_user_callbacks_data_mt.mutex);
- init_callbacks_list(&switch_user_callbacks_data_mt, g_variant_new("(iii)", -1, -1, -1));
+ init_callbacks_list(&switch_user_callbacks_data_mt, g_variant_new("(ii)", -1, -1));
GVariant * params;
- params = g_variant_new("(iii)", session_uid, prev_user, next_user);
+ params = g_variant_new("(ii)", session_uid, next_user);
signal_client_data_t *signal_client_data = make_new_signal_callback_client_data(cb, cb_data, params);
callbacks_data_append_to_list(switch_user_callbacks_data_mt, signal_client_data);
return result;
}
-
-
-
int tud_atomic_int_get(test_user_data_cb_t &arg) {
return g_atomic_int_get(&arg.callback_reference);
}
std::get<switch_user>(ud.t).prev_user_id = user_1;
std::get<switch_user>(ud.t).user_id = user_2;
- int switch_user_res = subsession_switch_user(test_subsession_uid, std::get<switch_user>(ud.t).prev_user_id
- , std::get<switch_user>(ud.t).user_id, test_reply_callback, (void *)&std::get<switch_user>(ud.t));
+ int switch_user_res = subsession_switch_user(test_subsession_uid, std::get<switch_user>(ud.t).user_id, test_reply_callback, (void *)&std::get<switch_user>(ud.t));
int remove_user_res_1 = remove_user_wrap<remove_user_1>(user_1, test_reply_callback, ud);
g_idle_add(callback_pending_ud<ud_>,(gpointer*)&ud);
g_main_loop_run(ud.loop);
-
EXPECT_EQ(switch_user_wait_res, 0);
EXPECT_EQ(add_user_res_1, 0);
EXPECT_EQ(remove_user_res_1, 0);