diff options
author | Federico Mena Quintero <federico@helixcode.com> | 2000-07-10 17:30:28 +0800 |
---|---|---|
committer | Federico Mena Quintero <federico@src.gnome.org> | 2000-07-10 17:30:28 +0800 |
commit | 84ba8642c55c514b7fe23aa90fabdbd0d90250ab (patch) | |
tree | 54fe069a02cf1ea69f6ee237221ef3c919ff46e7 /shell | |
parent | f587f3d4a5643c1ebe5aa7be2883fa1137b6645f (diff) | |
download | gsoc2013-evolution-84ba8642c55c514b7fe23aa90fabdbd0d90250ab.tar gsoc2013-evolution-84ba8642c55c514b7fe23aa90fabdbd0d90250ab.tar.gz gsoc2013-evolution-84ba8642c55c514b7fe23aa90fabdbd0d90250ab.tar.bz2 gsoc2013-evolution-84ba8642c55c514b7fe23aa90fabdbd0d90250ab.tar.lz gsoc2013-evolution-84ba8642c55c514b7fe23aa90fabdbd0d90250ab.tar.xz gsoc2013-evolution-84ba8642c55c514b7fe23aa90fabdbd0d90250ab.tar.zst gsoc2013-evolution-84ba8642c55c514b7fe23aa90fabdbd0d90250ab.zip |
As a quasi-hack, do a gdk_flush() when the shell view is unrealized so
2000-07-10 Federico Mena Quintero <federico@helixcode.com>
* e-shell-view.c (unrealize): As a quasi-hack, do a gdk_flush()
when the shell view is unrealized so that the DeleteEvent gets
sent to the remote plugs as soon as possible before we start
making other CORBA calls. The problem is that our CORBA pipe is
synchronous while our X pipe is asynch. We have to ensure
ordering for certain operations. This is NOT the correct and
complete fix, which should go in Bonobo.
svn path=/trunk/; revision=4030
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ChangeLog | 10 | ||||
-rw-r--r-- | shell/e-shell-view.c | 23 |
2 files changed, 32 insertions, 1 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog index ca0a178947..890eb8d51e 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,13 @@ +2000-07-10 Federico Mena Quintero <federico@helixcode.com> + + * e-shell-view.c (unrealize): As a quasi-hack, do a gdk_flush() + when the shell view is unrealized so that the DeleteEvent gets + sent to the remote plugs as soon as possible before we start + making other CORBA calls. The problem is that our CORBA pipe is + synchronous while our X pipe is asynch. We have to ensure + ordering for certain operations. This is NOT the correct and + complete fix, which should go in Bonobo. + 2000-07-08 Ettore Perazzoli <ettore@helixcode.com> * e-shell-view.c (e_shell_view_display_uri): Don't update the diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c index fc211e8727..36e0becf0d 100644 --- a/shell/e-shell-view.c +++ b/shell/e-shell-view.c @@ -353,6 +353,22 @@ destroy (GtkObject *object) (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } +/* Unrealize handler */ +static void +unrealize (GtkWidget *widget) +{ + if (GTK_WIDGET_CLASS (parent_class)->unrealize) + (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); + + /* We flush so that all the destroy window requests for foreign windows + * get sent over the X wire. Hopefully this will diminish the chance of + * hitting the CORBA (sync) vs. Xlib (async) race conditions. This is + * not the complete fix, which should actually be put in Bonobo and + * completed. FIXME. + */ + gdk_flush (); +} + /* Initialization. */ @@ -360,10 +376,15 @@ static void class_init (EShellViewClass *klass) { GtkObjectClass *object_class; + GtkWidgetClass *widget_class; + + object_class = (GtkObjectClass *) klass; + widget_class = (GtkWidgetClass *) klass; - object_class = GTK_OBJECT_CLASS (klass); object_class->destroy = destroy; + widget_class->unrealize = unrealize; + parent_class = gtk_type_class (gnome_app_get_type ()); signals[SHORTCUT_BAR_MODE_CHANGED] |