diff options
author | Owen Taylor <otaylor@redhat.com> | 2001-07-18 22:43:41 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2001-07-18 22:43:41 +0000 |
commit | b613a74cb20a480f9d95579243278660af300cee (patch) | |
tree | 47e7d815d87e40af35640ef13fb494282518f53c | |
parent | f500db339a6db572819663947933396cf79c3534 (diff) | |
download | gtk+-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-- | ChangeLog | 10 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 10 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 10 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 10 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 10 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 10 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 10 | ||||
-rw-r--r-- | gtk/gtkbutton.c | 4 | ||||
-rw-r--r-- | gtk/gtkclipboard.c | 12 | ||||
-rw-r--r-- | gtk/gtkdialog.c | 2 | ||||
-rw-r--r-- | gtk/gtkentry.c | 16 | ||||
-rw-r--r-- | gtk/gtkimage.c | 4 | ||||
-rw-r--r-- | gtk/gtkmenu.c | 8 | ||||
-rw-r--r-- | gtk/gtktextview.c | 55 | ||||
-rw-r--r-- | gtk/gtktreeview.c | 19 |
15 files changed, 167 insertions, 23 deletions
@@ -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 */ |