summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2001-07-18 22:43:41 +0000
committerOwen Taylor <otaylor@src.gnome.org>2001-07-18 22:43:41 +0000
commitb613a74cb20a480f9d95579243278660af300cee (patch)
tree47e7d815d87e40af35640ef13fb494282518f53c
parentf500db339a6db572819663947933396cf79c3534 (diff)
downloadgtk+-b613a74cb20a480f9d95579243278660af300cee.tar.gz
Fix idles and timeouts to be properly surrounded by
Wed Jul 18 18:23:05 2001 Owen Taylor <otaylor@redhat.com> * gtk/gtkbutton.c gtk/gtkentry.c gtk/gtkmenu.c gtk/gtktextview.c gtktreeview.c: Fix idles and timeouts to be properly surrounded by GDK_THREADS_ENTER()/LEAVE() pairs. * gtk/gtkdialog.c gtk/gtkclipboard.c: Surround calls to g_main_loop_run() with GDK_THREADS_LEAVE()/ENTER() pairs. (Problem found by M. Meeks)
-rw-r--r--ChangeLog10
-rw-r--r--ChangeLog.pre-2-010
-rw-r--r--ChangeLog.pre-2-1010
-rw-r--r--ChangeLog.pre-2-210
-rw-r--r--ChangeLog.pre-2-410
-rw-r--r--ChangeLog.pre-2-610
-rw-r--r--ChangeLog.pre-2-810
-rw-r--r--gtk/gtkbutton.c4
-rw-r--r--gtk/gtkclipboard.c12
-rw-r--r--gtk/gtkdialog.c2
-rw-r--r--gtk/gtkentry.c16
-rw-r--r--gtk/gtkimage.c4
-rw-r--r--gtk/gtkmenu.c8
-rw-r--r--gtk/gtktextview.c55
-rw-r--r--gtk/gtktreeview.c19
15 files changed, 167 insertions, 23 deletions
diff --git a/ChangeLog b/ChangeLog
index db8824a13e..b8f67001ef 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+Wed Jul 18 18:23:05 2001 Owen Taylor <otaylor@redhat.com>
+
+ * gtk/gtkbutton.c gtk/gtkentry.c gtk/gtkmenu.c gtk/gtktextview.c
+ gtktreeview.c: Fix idles and timeouts to be properly surrounded by
+ GDK_THREADS_ENTER()/LEAVE() pairs.
+
+ * gtk/gtkdialog.c gtk/gtkclipboard.c: Surround calls
+ to g_main_loop_run() with GDK_THREADS_LEAVE()/ENTER()
+ pairs. (Problem found by M. Meeks)
+
2001-07-18 Darin Adler <darin@bentspoon.com>
* gtk/gtkiconfactory.c: (gtk_icon_size_register): Reorder code so
diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0
index db8824a13e..b8f67001ef 100644
--- a/ChangeLog.pre-2-0
+++ b/ChangeLog.pre-2-0
@@ -1,3 +1,13 @@
+Wed Jul 18 18:23:05 2001 Owen Taylor <otaylor@redhat.com>
+
+ * gtk/gtkbutton.c gtk/gtkentry.c gtk/gtkmenu.c gtk/gtktextview.c
+ gtktreeview.c: Fix idles and timeouts to be properly surrounded by
+ GDK_THREADS_ENTER()/LEAVE() pairs.
+
+ * gtk/gtkdialog.c gtk/gtkclipboard.c: Surround calls
+ to g_main_loop_run() with GDK_THREADS_LEAVE()/ENTER()
+ pairs. (Problem found by M. Meeks)
+
2001-07-18 Darin Adler <darin@bentspoon.com>
* gtk/gtkiconfactory.c: (gtk_icon_size_register): Reorder code so
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index db8824a13e..b8f67001ef 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,13 @@
+Wed Jul 18 18:23:05 2001 Owen Taylor <otaylor@redhat.com>
+
+ * gtk/gtkbutton.c gtk/gtkentry.c gtk/gtkmenu.c gtk/gtktextview.c
+ gtktreeview.c: Fix idles and timeouts to be properly surrounded by
+ GDK_THREADS_ENTER()/LEAVE() pairs.
+
+ * gtk/gtkdialog.c gtk/gtkclipboard.c: Surround calls
+ to g_main_loop_run() with GDK_THREADS_LEAVE()/ENTER()
+ pairs. (Problem found by M. Meeks)
+
2001-07-18 Darin Adler <darin@bentspoon.com>
* gtk/gtkiconfactory.c: (gtk_icon_size_register): Reorder code so
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index db8824a13e..b8f67001ef 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -1,3 +1,13 @@
+Wed Jul 18 18:23:05 2001 Owen Taylor <otaylor@redhat.com>
+
+ * gtk/gtkbutton.c gtk/gtkentry.c gtk/gtkmenu.c gtk/gtktextview.c
+ gtktreeview.c: Fix idles and timeouts to be properly surrounded by
+ GDK_THREADS_ENTER()/LEAVE() pairs.
+
+ * gtk/gtkdialog.c gtk/gtkclipboard.c: Surround calls
+ to g_main_loop_run() with GDK_THREADS_LEAVE()/ENTER()
+ pairs. (Problem found by M. Meeks)
+
2001-07-18 Darin Adler <darin@bentspoon.com>
* gtk/gtkiconfactory.c: (gtk_icon_size_register): Reorder code so
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index db8824a13e..b8f67001ef 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,3 +1,13 @@
+Wed Jul 18 18:23:05 2001 Owen Taylor <otaylor@redhat.com>
+
+ * gtk/gtkbutton.c gtk/gtkentry.c gtk/gtkmenu.c gtk/gtktextview.c
+ gtktreeview.c: Fix idles and timeouts to be properly surrounded by
+ GDK_THREADS_ENTER()/LEAVE() pairs.
+
+ * gtk/gtkdialog.c gtk/gtkclipboard.c: Surround calls
+ to g_main_loop_run() with GDK_THREADS_LEAVE()/ENTER()
+ pairs. (Problem found by M. Meeks)
+
2001-07-18 Darin Adler <darin@bentspoon.com>
* gtk/gtkiconfactory.c: (gtk_icon_size_register): Reorder code so
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index db8824a13e..b8f67001ef 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,13 @@
+Wed Jul 18 18:23:05 2001 Owen Taylor <otaylor@redhat.com>
+
+ * gtk/gtkbutton.c gtk/gtkentry.c gtk/gtkmenu.c gtk/gtktextview.c
+ gtktreeview.c: Fix idles and timeouts to be properly surrounded by
+ GDK_THREADS_ENTER()/LEAVE() pairs.
+
+ * gtk/gtkdialog.c gtk/gtkclipboard.c: Surround calls
+ to g_main_loop_run() with GDK_THREADS_LEAVE()/ENTER()
+ pairs. (Problem found by M. Meeks)
+
2001-07-18 Darin Adler <darin@bentspoon.com>
* gtk/gtkiconfactory.c: (gtk_icon_size_register): Reorder code so
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index db8824a13e..b8f67001ef 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,13 @@
+Wed Jul 18 18:23:05 2001 Owen Taylor <otaylor@redhat.com>
+
+ * gtk/gtkbutton.c gtk/gtkentry.c gtk/gtkmenu.c gtk/gtktextview.c
+ gtktreeview.c: Fix idles and timeouts to be properly surrounded by
+ GDK_THREADS_ENTER()/LEAVE() pairs.
+
+ * gtk/gtkdialog.c gtk/gtkclipboard.c: Surround calls
+ to g_main_loop_run() with GDK_THREADS_LEAVE()/ENTER()
+ pairs. (Problem found by M. Meeks)
+
2001-07-18 Darin Adler <darin@bentspoon.com>
* gtk/gtkiconfactory.c: (gtk_icon_size_register): Reorder code so
diff --git a/gtk/gtkbutton.c b/gtk/gtkbutton.c
index 69dc58390a..5ca6bad1fc 100644
--- a/gtk/gtkbutton.c
+++ b/gtk/gtkbutton.c
@@ -1033,8 +1033,12 @@ gtk_real_button_leave (GtkButton *button)
static gboolean
button_activate_timeout (gpointer data)
{
+ GDK_THREADS_ENTER ();
+
gtk_button_finish_activate (data, TRUE);
+ GDK_THREADS_LEAVE ();
+
return FALSE;
}
diff --git a/gtk/gtkclipboard.c b/gtk/gtkclipboard.c
index 724e5f24e1..c64d4c0b51 100644
--- a/gtk/gtkclipboard.c
+++ b/gtk/gtkclipboard.c
@@ -754,7 +754,11 @@ gtk_clipboard_wait_for_contents (GtkClipboard *clipboard,
&results);
if (g_main_is_running (results.loop))
- g_main_run (results.loop);
+ {
+ GDK_THREADS_LEAVE ();
+ g_main_run (results.loop);
+ GDK_THREADS_ENTER ();
+ }
g_main_destroy (results.loop);
@@ -805,7 +809,11 @@ gtk_clipboard_wait_for_text (GtkClipboard *clipboard)
&results);
if (g_main_is_running (results.loop))
- g_main_run (results.loop);
+ {
+ GDK_THREADS_LEAVE ();
+ g_main_run (results.loop);
+ GDK_THREADS_ENTER ();
+ }
g_main_destroy (results.loop);
diff --git a/gtk/gtkdialog.c b/gtk/gtkdialog.c
index 4dba60f1b5..3a3c49bc97 100644
--- a/gtk/gtkdialog.c
+++ b/gtk/gtkdialog.c
@@ -878,7 +878,9 @@ gtk_dialog_run (GtkDialog *dialog)
ri.loop = g_main_new (FALSE);
+ GDK_THREADS_LEAVE ();
g_main_loop_run (ri.loop);
+ GDK_THREADS_ENTER ();
g_main_loop_unref (ri.loop);
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c
index 4530fa423a..47f76957ba 100644
--- a/gtk/gtkentry.c
+++ b/gtk/gtkentry.c
@@ -2163,7 +2163,11 @@ update_im_cursor_location (GtkEntry *entry)
static gboolean
recompute_idle_func (gpointer data)
{
- GtkEntry *entry = GTK_ENTRY (data);
+ GtkEntry *entry;
+
+ GDK_THREADS_ENTER ();
+
+ entry = GTK_ENTRY (data);
gtk_entry_adjust_scroll (entry);
gtk_entry_queue_draw (entry);
@@ -2172,6 +2176,8 @@ recompute_idle_func (gpointer data)
update_im_cursor_location (entry);
+ GDK_THREADS_LEAVE ();
+
return FALSE;
}
@@ -3807,7 +3813,11 @@ hide_cursor (GtkEntry *entry)
static gint
blink_cb (gpointer data)
{
- GtkEntry *entry = GTK_ENTRY (data);
+ GtkEntry *entry;
+
+ GDK_THREADS_ENTER ();
+
+ entry = GTK_ENTRY (data);
g_assert (GTK_WIDGET_HAS_FOCUS (entry));
g_assert (entry->selection_bound == entry->current_pos);
@@ -3827,6 +3837,8 @@ blink_cb (gpointer data)
entry);
}
+ GDK_THREADS_LEAVE ();
+
/* Remove ourselves */
return FALSE;
}
diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c
index 0188d8c2b8..bafb38b63e 100644
--- a/gtk/gtkimage.c
+++ b/gtk/gtkimage.c
@@ -844,6 +844,8 @@ animation_timeout (gpointer data)
{
GtkImage *image;
+ GDK_THREADS_ENTER ();
+
image = GTK_IMAGE (data);
image->data.anim.frame_timeout = 0;
@@ -858,6 +860,8 @@ animation_timeout (gpointer data)
gtk_widget_queue_draw (GTK_WIDGET (image));
+ GDK_THREADS_LEAVE ();
+
return FALSE;
}
diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c
index 65f2a39681..ecf89edd28 100644
--- a/gtk/gtkmenu.c
+++ b/gtk/gtkmenu.c
@@ -1628,6 +1628,8 @@ gtk_menu_scroll_timeout (gpointer data)
gint offset;
gint view_width, view_height;
+ GDK_THREADS_ENTER ();
+
menu = GTK_MENU (data);
widget = GTK_WIDGET (menu);
@@ -1657,6 +1659,8 @@ gtk_menu_scroll_timeout (gpointer data)
gtk_menu_scroll_to (menu, offset);
+ GDK_THREADS_LEAVE ();
+
return TRUE;
}
@@ -1846,6 +1850,8 @@ gtk_menu_stop_navigating_submenu_cb (gpointer user_data)
GtkMenu *menu = user_data;
GdkWindow *child_window;
+ GDK_THREADS_ENTER ();
+
gtk_menu_stop_navigating_submenu (menu);
if (GTK_WIDGET_REALIZED (menu))
@@ -1866,6 +1872,8 @@ gtk_menu_stop_navigating_submenu_cb (gpointer user_data)
}
}
+ GDK_THREADS_LEAVE ();
+
return FALSE;
}
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index 370badb3b4..108eb4102e 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -2705,6 +2705,8 @@ first_validate_callback (gpointer data)
{
GtkTextView *text_view = data;
+ GDK_THREADS_ENTER ();
+
/* Note that some of this code is duplicated at the end of size_allocate,
* keep in sync with that.
*/
@@ -2728,19 +2730,23 @@ first_validate_callback (gpointer data)
if (text_view->first_validate_idle != 0)
{
DV(g_print(">Width change forced requeue ("G_STRLOC")\n"));
- return FALSE;
+ }
+ else
+ {
+ /* scroll to any marks, if that's pending. This can
+ * jump us to the validation codepath used for scrolling
+ * onscreen, if so we bail out.
+ */
+ if (!gtk_text_view_flush_scroll (text_view))
+ gtk_text_view_validate_onscreen (text_view);
+
+ DV(g_print(">Leaving first validate idle ("G_STRLOC")\n"));
+
+ g_assert (text_view->onscreen_validated);
+
}
- /* scroll to any marks, if that's pending. This can
- * jump us to the validation codepath used for scrolling
- * onscreen, if so we bail out.
- */
- if (!gtk_text_view_flush_scroll (text_view))
- gtk_text_view_validate_onscreen (text_view);
-
- DV(g_print(">Leaving first validate idle ("G_STRLOC")\n"));
-
- g_assert (text_view->onscreen_validated);
+ GDK_THREADS_LEAVE ();
return FALSE;
}
@@ -2749,7 +2755,10 @@ static gboolean
incremental_validate_callback (gpointer data)
{
GtkTextView *text_view = data;
+ gboolean result = TRUE;
+ GDK_THREADS_ENTER ();
+
DV(g_print(G_STRLOC"\n"));
gtk_text_layout_validate (text_view->layout, 2000);
@@ -2759,10 +2768,12 @@ incremental_validate_callback (gpointer data)
if (gtk_text_layout_is_valid (text_view->layout))
{
text_view->incremental_validate_idle = 0;
- return FALSE;
+ result = FALSE;
}
- else
- return TRUE;
+
+ GDK_THREADS_LEAVE ();
+
+ return result;
}
static void
@@ -3688,8 +3699,12 @@ get_cursor_time (GtkTextView *text_view)
static gint
blink_cb (gpointer data)
{
- GtkTextView *text_view = GTK_TEXT_VIEW (data);
+ GtkTextView *text_view;
gboolean visible;
+
+ GDK_THREADS_ENTER ();
+
+ text_view = GTK_TEXT_VIEW (data);
g_assert (text_view->layout);
g_assert (GTK_WIDGET_HAS_FOCUS (text_view));
@@ -3709,6 +3724,8 @@ blink_cb (gpointer data)
gtk_text_layout_set_cursor_visible (text_view->layout,
!visible);
+ GDK_THREADS_LEAVE ();
+
/* Remove ourselves */
return FALSE;
}
@@ -4224,10 +4241,14 @@ selection_scan_timeout (gpointer data)
{
GtkTextView *text_view;
+ GDK_THREADS_ENTER ();
+
text_view = GTK_TEXT_VIEW (data);
move_mark_to_pointer_and_scroll (text_view, "insert");
+ GDK_THREADS_LEAVE ();
+
return TRUE; /* remain installed. */
}
@@ -4240,6 +4261,8 @@ drag_scan_timeout (gpointer data)
gint x, y;
GdkModifierType state;
GtkTextIter newplace;
+
+ GDK_THREADS_ENTER ();
text_view = GTK_TEXT_VIEW (data);
@@ -4259,6 +4282,8 @@ drag_scan_timeout (gpointer data)
text_view->dnd_mark,
DND_SCROLL_MARGIN, FALSE, 0.0, 0.0);
+ GDK_THREADS_LEAVE ();
+
return TRUE;
}
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 2ddb2a51b6..c1a617e58a 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -3021,6 +3021,7 @@ remove_info (GtkTreeView *tree_view)
g_object_set_data (G_OBJECT (tree_view), "gtk-tree-view-drag-info", NULL);
}
+#if 0
static gint
drag_scan_timeout (gpointer data)
{
@@ -3031,6 +3032,8 @@ drag_scan_timeout (gpointer data)
GtkTreeViewColumn *column = NULL;
GdkRectangle visible_rect;
+ GDK_THREADS_ENTER ();
+
tree_view = GTK_TREE_VIEW (data);
gdk_window_get_pointer (tree_view->priv->bin_window,
@@ -3063,9 +3066,11 @@ drag_scan_timeout (gpointer data)
}
}
+ GDK_THREADS_LEAVE ();
+
return TRUE;
}
-
+#endif /* 0 */
static void
remove_scroll_timeout (GtkTreeView *tree_view)
@@ -3117,7 +3122,10 @@ open_row_timeout (gpointer data)
GtkTreeView *tree_view = data;
GtkTreePath *dest_path = NULL;
GtkTreeViewDropPosition pos;
+ gboolean result = FALSE;
+ GDK_THREADS_ENTER ();
+
gtk_tree_view_get_drag_dest_row (tree_view,
&dest_path,
&pos);
@@ -3130,15 +3138,18 @@ open_row_timeout (gpointer data)
tree_view->priv->open_dest_timeout = 0;
gtk_tree_path_free (dest_path);
-
- return FALSE;
}
else
{
if (dest_path)
gtk_tree_path_free (dest_path);
- return TRUE;
+
+ result = TRUE;
}
+
+ GDK_THREADS_LEAVE ();
+
+ return result;
}
/* Returns TRUE if event should not be propagated to parent widgets */