[gimp/gtk3-port: 53/227] app: port to GtkWidget::draw() (incompletely)



commit f9b855331bd95c7e2c1396dda8c848458848960a
Author: Michael Natterer <mitch gimp org>
Date:   Tue Oct 19 20:00:10 2010 +0200

    app: port to GtkWidget::draw() (incompletely)

 app/display/gimpdisplayshell-callbacks.c |   31 +++++++++++------------------
 1 files changed, 12 insertions(+), 19 deletions(-)
---
diff --git a/app/display/gimpdisplayshell-callbacks.c b/app/display/gimpdisplayshell-callbacks.c
index 7f14f11..b93af86 100644
--- a/app/display/gimpdisplayshell-callbacks.c
+++ b/app/display/gimpdisplayshell-callbacks.c
@@ -230,32 +230,25 @@ gimp_display_shell_is_double_buffered (GimpDisplayShell *shell)
 }
 
 gboolean
-gimp_display_shell_canvas_expose (GtkWidget        *widget,
-                                  GdkEventExpose   *eevent,
-                                  GimpDisplayShell *shell)
+gimp_display_shell_canvas_draw (GtkWidget        *widget,
+                                cairo_t          *cr,
+                                GimpDisplayShell *shell)
 {
   /*  are we in destruction?  */
   if (! shell->display || ! gimp_display_get_shell (shell->display))
     return TRUE;
 
   /*  ignore events on overlays  */
-  if (eevent->window == gtk_widget_get_window (widget))
+  if (gtk_cairo_should_draw_window (cr, gtk_widget_get_window (widget)))
     {
-      cairo_t *cr;
-
       if (gimp_display_get_image (shell->display))
         {
+#if 0
           if (gimp_display_shell_is_double_buffered (shell))
             gdk_window_begin_paint_region (eevent->window, eevent->region);
+#endif
         }
 
-      /*  create the cairo_t after enabling double buffering, or we
-       *  will get the wrong window destination surface
-       */
-      cr = gdk_cairo_create (gtk_widget_get_window (shell->canvas));
-      gdk_cairo_region (cr, eevent->region);
-      cairo_clip (cr);
-
       if (gimp_display_get_image (shell->display))
         {
           gimp_display_shell_canvas_draw_image (shell, cr);
@@ -264,29 +257,29 @@ gimp_display_shell_canvas_expose (GtkWidget        *widget,
         {
           gimp_display_shell_canvas_draw_drop_zone (shell, cr);
         }
-
-      cairo_destroy (cr);
     }
 
   return FALSE;
 }
 
 gboolean
-gimp_display_shell_canvas_expose_after (GtkWidget        *widget,
-                                        GdkEventExpose   *eevent,
-                                        GimpDisplayShell *shell)
+gimp_display_shell_canvas_draw_after (GtkWidget        *widget,
+                                      cairo_t          *cr,
+                                      GimpDisplayShell *shell)
 {
   /*  are we in destruction?  */
   if (! shell->display || ! gimp_display_get_shell (shell->display))
     return TRUE;
 
   /*  ignore events on overlays  */
-  if (eevent->window == gtk_widget_get_window (widget))
+  if (gtk_cairo_should_draw_window (cr, gtk_widget_get_window (widget)))
     {
       if (gimp_display_get_image (shell->display))
         {
+#if 0
           if (gimp_display_shell_is_double_buffered (shell))
             gdk_window_end_paint (eevent->window);
+#endif
         }
     }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]