[gtk+/gtk-2-24] win32: fix GDK_DEBUG="draw" crasher



commit 1b58117bbf9c7216df42f897a72e66638278803a
Author: Dieter Verfaillie <dieterv optionexplicit be>
Date:   Wed Nov 9 14:43:28 2011 +0100

    win32: fix GDK_DEBUG="draw" crasher
    
    When running with GDK_DUBUG="draw", gdk_win32_draw_rectangle
    calls _gdk_win32_drawable_description, which calls
    gdk_drawable_get_size for a GdkWindowImplWin32.
    
    gdk_drawable_get_size then tries to call
    GDK_DRAWABLE_GET_CLASS (drawable)->get_size, which points
    to NULL for GdkWindowImplWin32.
    
    Adding the missing drawable_class->get_size implementation
    fixes this.

 gdk/win32/gdkwindow-win32.c |   24 ++++++++++++++++++++++++
 1 files changed, 24 insertions(+), 0 deletions(-)
---
diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c
index 867e343..60a7dd6 100644
--- a/gdk/win32/gdkwindow-win32.c
+++ b/gdk/win32/gdkwindow-win32.c
@@ -39,6 +39,10 @@
 static GdkColormap* gdk_window_impl_win32_get_colormap (GdkDrawable *drawable);
 static void         gdk_window_impl_win32_set_colormap (GdkDrawable *drawable,
 							GdkColormap *cmap);
+
+static void gdk_window_impl_win32_get_size   (GdkDrawable        *drawable,
+                                              gint               *width,
+                                              gint               *height);
 static void gdk_window_impl_win32_init       (GdkWindowImplWin32      *window);
 static void gdk_window_impl_win32_class_init (GdkWindowImplWin32Class *klass);
 static void gdk_window_impl_win32_finalize   (GObject                 *object);
@@ -117,6 +121,25 @@ _gdk_window_impl_get_type (void)
 }
 
 static void
+gdk_window_impl_win32_get_size (GdkDrawable *drawable,
+                                gint        *width,
+                                gint        *height)
+{
+  GdkWindowObject *wrapper;
+  GdkDrawableImplWin32 *draw_impl;
+
+  g_return_if_fail (GDK_IS_WINDOW_IMPL_WIN32 (drawable));
+
+  draw_impl = GDK_DRAWABLE_IMPL_WIN32 (drawable);
+  wrapper = (GdkWindowObject*) draw_impl->wrapper;
+
+  if (width)
+    *width = wrapper->width;
+  if (height)
+    *height = wrapper->height;
+}
+
+static void
 gdk_window_impl_win32_init (GdkWindowImplWin32 *impl)
 {
   impl->toplevel_window_type = -1;
@@ -144,6 +167,7 @@ gdk_window_impl_win32_class_init (GdkWindowImplWin32Class *klass)
 
   drawable_class->set_colormap = gdk_window_impl_win32_set_colormap;
   drawable_class->get_colormap = gdk_window_impl_win32_get_colormap;
+  drawable_class->get_size = gdk_window_impl_win32_get_size;
 }
 
 static void



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