diff options
author | Peter Williams <peterw@src.gnome.org> | 2000-08-11 01:30:50 +0800 |
---|---|---|
committer | Peter Williams <peterw@src.gnome.org> | 2000-08-11 01:30:50 +0800 |
commit | 8cb514d6dd9497893a35a089d07a132d51263ee7 (patch) | |
tree | 9f4e5d1f929da7e0be900919753d419fe4c9c61a /shell | |
parent | bcbb63c59f80eb4e684036c5ef58ab141fb01b03 (diff) | |
download | gsoc2013-evolution-8cb514d6dd9497893a35a089d07a132d51263ee7.tar gsoc2013-evolution-8cb514d6dd9497893a35a089d07a132d51263ee7.tar.gz gsoc2013-evolution-8cb514d6dd9497893a35a089d07a132d51263ee7.tar.bz2 gsoc2013-evolution-8cb514d6dd9497893a35a089d07a132d51263ee7.tar.lz gsoc2013-evolution-8cb514d6dd9497893a35a089d07a132d51263ee7.tar.xz gsoc2013-evolution-8cb514d6dd9497893a35a089d07a132d51263ee7.tar.zst gsoc2013-evolution-8cb514d6dd9497893a35a089d07a132d51263ee7.zip |
Merge with camel-async.
svn path=/trunk/; revision=4687
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ChangeLog | 11 | ||||
-rw-r--r-- | shell/evolution-shell-client.c | 19 |
2 files changed, 17 insertions, 13 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog index 56dd6665a4..f160418e7d 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -148,6 +148,17 @@ (e_shell_folder_title_bar_set_title): Set both `label' and `button_label'. +2000-07-21 Peter Williams <peterw@helixcode.com> + + * evolution-shell-client.c (user_select_folder): Don't use + g_main_loop to block the caller; this will break when + threads are enabled and GDK_THREADS_ENTER deadlocks. Use + gtk_main / gtk_main_exit to enter and exit the main loop, + which handles the recursive case correctly. + (impl_FolderSelectionListener_selected): Same. + (impl_FolderSelectionListener_cancel): Same. + (struct _FolderSelectionListenerServant): No more main_loop member. + 2000-07-21 Ettore Perazzoli <ettore@helixcode.com> * e-shell-view.c (storage_set_view_box_button_release_event_cb): diff --git a/shell/evolution-shell-client.c b/shell/evolution-shell-client.c index d4469990b0..4e4fd830b3 100644 --- a/shell/evolution-shell-client.c +++ b/shell/evolution-shell-client.c @@ -49,7 +49,6 @@ static gboolean FolderSelectionListener_vtables_initialized = FALSE; struct _FolderSelectionListenerServant { POA_Evolution_FolderSelectionListener servant; - GMainLoop *main_loop; char **uri_return; char **physical_uri_return; }; @@ -71,7 +70,7 @@ impl_FolderSelectionListener_selected (PortableServer_Servant servant, if (listener_servant->physical_uri_return != NULL) * (listener_servant->physical_uri_return) = g_strdup (physical_uri); - g_main_quit (listener_servant->main_loop); + gtk_main_quit (); } static void @@ -88,7 +87,7 @@ impl_FolderSelectionListener_cancel (PortableServer_Servant servant, if (listener_servant->physical_uri_return != NULL) * (listener_servant->physical_uri_return) = NULL; - g_main_quit (listener_servant->main_loop); + gtk_main_quit (); } static void @@ -109,7 +108,6 @@ init_FolderSelectionListener_vtables (void) static Evolution_FolderSelectionListener create_folder_selection_listener_interface (char **result, - GMainLoop *main_loop, char **uri_return, char **physical_uri_return) { @@ -123,7 +121,6 @@ create_folder_selection_listener_interface (char **result, servant = g_new0 (FolderSelectionListenerServant, 1); servant->servant.vepv = &FolderSelectionListener_vepv; - servant->main_loop = main_loop; servant->uri_return = uri_return; servant->physical_uri_return = physical_uri_return; @@ -172,21 +169,17 @@ user_select_folder (EvolutionShellClient *shell_client, { Evolution_FolderSelectionListener listener_interface; Evolution_Shell corba_shell; - GMainLoop *main_loop; CORBA_Environment ev; Evolution_Shell_FolderTypeList corba_type_list; int num_possible_types; char *result; result = NULL; - main_loop = g_main_new (FALSE); - listener_interface = create_folder_selection_listener_interface (&result, main_loop, - uri_return, physical_uri_return); - if (listener_interface == CORBA_OBJECT_NIL) { - g_main_destroy (main_loop); + listener_interface = create_folder_selection_listener_interface (&result, uri_return, + physical_uri_return); + if (listener_interface == CORBA_OBJECT_NIL) return; - } CORBA_exception_init (&ev); @@ -213,7 +206,7 @@ user_select_folder (EvolutionShellClient *shell_client, return; } - g_main_run (main_loop); + gtk_main(); CORBA_Object_release (listener_interface, &ev); |