aboutsummaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorPeter Williams <peterw@src.gnome.org>2000-08-11 01:30:50 +0800
committerPeter Williams <peterw@src.gnome.org>2000-08-11 01:30:50 +0800
commit8cb514d6dd9497893a35a089d07a132d51263ee7 (patch)
tree9f4e5d1f929da7e0be900919753d419fe4c9c61a /shell
parentbcbb63c59f80eb4e684036c5ef58ab141fb01b03 (diff)
downloadgsoc2013-evolution-8cb514d6dd9497893a35a089d07a132d51263ee7.tar.gz
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/ChangeLog11
-rw-r--r--shell/evolution-shell-client.c19
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);