From 35808f6cd559cb3f0df7da2f370e4fb7ab7d2bb8 Mon Sep 17 00:00:00 2001 From: hiro Date: Wed, 20 Apr 2005 04:39:57 +0000 Subject: improved performance of the update of statusbar. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@227 ee746299-78ed-0310-b773-934348b2243d --- ChangeLog | 13 +++++++++++++ ChangeLog.ja | 13 +++++++++++++ src/folderview.c | 2 +- src/gtkutils.c | 9 +++------ src/gtkutils.h | 2 +- src/mainwindow.c | 2 +- src/setup.c | 2 +- src/statusbar.c | 2 +- src/summaryview.c | 2 +- 9 files changed, 35 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 74a7654d..fc73218f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2005-04-20 + + * src/gtkutils.[ch]: gtkut_widget_draw_now(): use + gdk_window_process_updates() to force update of widgets. + Removed gtkut_widget_wait_for_draw() which had a big overhead + because of waiting for all events processed. + * src/statusbar.c + src/summaryview.c + src/setup.c + src/folderview.c + src/mainwindow.c: use gtkut_widget_draw_now(). Improved performance + of the update of statusbar. + 2005-04-20 * src/textview.c: textview_smooth_scroll_do(): redraw it after scroll diff --git a/ChangeLog.ja b/ChangeLog.ja index 832904e9..a4edd331 100644 --- a/ChangeLog.ja +++ b/ChangeLog.ja @@ -1,3 +1,16 @@ +2005-04-20 + + * src/gtkutils.[ch]: gtkut_widget_draw_now(): ウィジェットの強制更新 + に gdk_window_process_updates() を使用。 + 全てのイベントが処理されるのを待っていたために大きなオーバーヘッド + を生じていた gtkut_widget_wait_for_draw() を削除。 + * src/statusbar.c + src/summaryview.c + src/setup.c + src/folderview.c + src/mainwindow.c: gtkut_widget_draw_now() を使用。ステータスバー + の更新の処理速度を向上。 + 2005-04-20 * src/textview.c: textview_smooth_scroll_do(): スクロール完了後に diff --git a/src/folderview.c b/src/folderview.c index 9c848218..3277aa68 100644 --- a/src/folderview.c +++ b/src/folderview.c @@ -82,7 +82,7 @@ enum { \ gtk_statusbar_push(GTK_STATUSBAR(mainwin->statusbar), \ mainwin->folderview_cid, str); \ - gtkut_widget_wait_for_draw(mainwin->statusbar); \ + gtkut_widget_draw_now(mainwin->statusbar); \ } #define STATUSBAR_POP(mainwin) \ diff --git a/src/gtkutils.c b/src/gtkutils.c index 3807c9ef..5f845cae 100644 --- a/src/gtkutils.c +++ b/src/gtkutils.c @@ -792,13 +792,10 @@ void gtkut_widget_get_uposition(GtkWidget *widget, gint *px, gint *py) *py = y; } -#warning FIXME_GTK2 -void gtkut_widget_wait_for_draw(GtkWidget *widget) +void gtkut_widget_draw_now(GtkWidget *widget) { - if (!GTK_WIDGET_VISIBLE(widget) || !GTK_WIDGET_MAPPED(widget)) return; - - while (gtk_events_pending()) - gtk_main_iteration(); + if (GTK_WIDGET_VISIBLE(widget) && GTK_WIDGET_DRAWABLE(widget)) + gdk_window_process_updates(widget->window, FALSE); } static void gtkut_clist_bindings_add(GtkWidget *clist) diff --git a/src/gtkutils.h b/src/gtkutils.h index 5aa30081..1ffc25e5 100644 --- a/src/gtkutils.h +++ b/src/gtkutils.h @@ -195,7 +195,7 @@ void gtkut_window_popup (GtkWidget *window); void gtkut_widget_get_uposition (GtkWidget *widget, gint *px, gint *py); -void gtkut_widget_wait_for_draw (GtkWidget *widget); +void gtkut_widget_draw_now (GtkWidget *widget); void gtkut_widget_init (void); #endif /* __GTKUTILS_H__ */ diff --git a/src/mainwindow.c b/src/mainwindow.c index d785a309..f0d291ba 100644 --- a/src/mainwindow.c +++ b/src/mainwindow.c @@ -87,7 +87,7 @@ { \ gtk_statusbar_push(GTK_STATUSBAR(mainwin->statusbar), \ mainwin->mainwin_cid, str); \ - gtkut_widget_wait_for_draw(mainwin->statusbar); \ + gtkut_widget_draw_now(mainwin->statusbar); \ } #define STATUSBAR_POP(mainwin) \ diff --git a/src/setup.c b/src/setup.c index b044d17f..f924901f 100644 --- a/src/setup.c +++ b/src/setup.c @@ -88,7 +88,7 @@ static void scan_tree_func(Folder *folder, FolderItem *item, gpointer data) gtk_statusbar_push(GTK_STATUSBAR(mainwin->statusbar), mainwin->mainwin_cid, str); - gtkut_widget_wait_for_draw(mainwin->statusbar); + gtkut_widget_draw_now(mainwin->statusbar); gtk_statusbar_pop(GTK_STATUSBAR(mainwin->statusbar), mainwin->mainwin_cid); g_free(str); diff --git a/src/statusbar.c b/src/statusbar.c index e1f4ab29..c112b9cd 100644 --- a/src/statusbar.c +++ b/src/statusbar.c @@ -59,7 +59,7 @@ void statusbar_puts(GtkStatusbar *statusbar, const gchar *str) cid = gtk_statusbar_get_context_id(statusbar, "Standard Output"); gtk_statusbar_pop(statusbar, cid); gtk_statusbar_push(statusbar, cid, buf); - gtkut_widget_wait_for_draw(GTK_WIDGET(statusbar)->parent); + gtkut_widget_draw_now(GTK_WIDGET(statusbar)); g_free(buf); } diff --git a/src/summaryview.c b/src/summaryview.c index a3d7ab9a..2a7ff941 100644 --- a/src/summaryview.c +++ b/src/summaryview.c @@ -77,7 +77,7 @@ { \ gtk_statusbar_push(GTK_STATUSBAR(mainwin->statusbar), \ mainwin->summaryview_cid, str); \ - gtkut_widget_wait_for_draw(mainwin->statusbar); \ + gtkut_widget_draw_now(mainwin->statusbar); \ } #define STATUSBAR_POP(mainwin) \ -- cgit v1.2.3