GNOME Bugzilla – Bug 652530
EClient - Notify about opening phase result first
Last modified: 2013-09-14 16:53:50 UTC
Created attachment 189874 [details] (e_client_open_sync + e_client_is_opened): always work Sometimes e_client_is_opened will return false after e_client_open_finished is called successfully. I am attaching 3 test cases: - e-client-sync.c (e_client_open_sync + e_client_is_opened): always works - e-client.c (e_client_open + listen to "opened" signal + e_client_is_opened): always works - e-client-broken.c (e_client_open + callback + e_client_open_finish + e_client_is_opened): sometimes fails
Created attachment 189875 [details] e-client-broken: e_client_open + callback + e_client_open_finished + e_client_is_opened This sometimes fails.
Created attachment 189876 [details] e_client_open + opened signal + e_client_is_opened This is async and always works.
Confirming, I see this with your test application too. The issue is that the backend process, inside factory, is notifying about 'open' method call completion first, then about result of the opening phase, when the backend was found alive. In this case the "finish" callback is served before the notification about opening phase completion, thus the client doesn't know it is actually opened. Reverting the order fixes the issue.
Created commit b857171 in eds master (3.1.3+)