Fix invocation timing of plugin function after completed add/remove/swich 08/323208/1 accepted/tizen/9.0/unified/20250428.165913
authorChanwoo Choi <cw00.choi@samsung.com>
Tue, 22 Apr 2025 06:50:34 +0000 (15:50 +0900)
committerChanwoo Choi <cw00.choi@samsung.com>
Thu, 24 Apr 2025 05:56:37 +0000 (05:56 +0000)
commit b614b440a919 (Add basic event listener plugin support) has the
invocation timing issue of plugin funciton because invocating the plugin
function before add/remove/switch completion.
So that Invocate plugin function after add/remove/switch completion.

Change-Id: Ia7677c0e731829cff5a3c422f6b56d7402ba9936
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
(cherry picked from commit 31b8a8525ed04a92e32a7888873b0c8b736c3a7f)

src/service/src/main_context.hpp

index 7ed8252c650c44ec406d4fda09bf481583a06893..5bcea5776af7d272797a4aaf548f39485c4a0091 100644 (file)
@@ -186,10 +186,10 @@ struct sessiond_context {
 
                add_user_subsession(session_uid, subsession_id, backend);
 
-               plugin.OnSubsessionAdded(session_uid, subsession_id);
-
                wait_add.try_emplace(session_uid, session_uid, connection, "AddUserCompleted");
                wait_add.at(session_uid).on_start(subsession_id, { });
+
+               plugin.OnSubsessionAdded(session_uid, subsession_id);
        }
 
        void do_remove_user(int session_uid, const std::string& subsession_id)
@@ -201,10 +201,10 @@ struct sessiond_context {
 
                remove_user_subsession(session_uid, subsession_id);
 
-               plugin.OnSubsessionRemoved(session_uid, subsession_id);
-
                wait_remove.try_emplace(session_uid, session_uid, connection, "RemoveUserCompleted");
                wait_remove.at(session_uid).on_start(subsession_id, { });
+
+               plugin.OnSubsessionRemoved(session_uid, subsession_id);
        }
 
        bool do_switch_user(int session_uid, const std::string& next_subsession_id)
@@ -223,13 +223,13 @@ struct sessiond_context {
                if (!switch_user_subsession(session_uid, prev_subsession_id, next_subsession_id))
                        return false;
 
-               plugin.OnSubsessionChanged(session_uid, prev_subsession_id, next_subsession_id);
-
                last_subsession_per_session[session_uid] = next_subsession_id;
 
                wait_switch.try_emplace(session_uid, session_uid, connection, "SwitchUserCompleted");
                wait_switch.at(session_uid).on_start(switch_id, { std::string(prev_subsession_id), next_subsession_id });
 
+               plugin.OnSubsessionChanged(session_uid, prev_subsession_id, next_subsession_id);
+
                return true;
        }