[gtk+] Make GdkDrawable draw_drawable backwards compat



commit 2e3866b5b2cd727fdd68e51ddb766e736ac59900
Author: Alexander Larsson <alexl redhat com>
Date:   Wed Jul 1 19:50:49 2009 +0200

    Make GdkDrawable draw_drawable backwards compat
    
    Turns out pygtk build broke due to the argument addition to draw_drawable.
    So, we now add a new vfunc for the new draw_drawable and are thus
    backwards compat.

 gdk/gdkdraw.c                   |   22 +++++++++++++++-------
 gdk/gdkdrawable.h               |   15 ++++++++++++---
 gdk/gdkoffscreenwindow.c        |    2 +-
 gdk/gdkpixmap.c                 |    2 +-
 gdk/gdkwindow.c                 |    2 +-
 gdk/quartz/gdkdrawable-quartz.c |    2 +-
 gdk/win32/gdkdrawable-win32.c   |    2 +-
 gdk/x11/gdkdrawable-x11.c       |    2 +-
 8 files changed, 33 insertions(+), 16 deletions(-)
---
diff --git a/gdk/gdkdraw.c b/gdk/gdkdraw.c
index ad0af79..b0ed2ae 100644
--- a/gdk/gdkdraw.c
+++ b/gdk/gdkdraw.c
@@ -668,13 +668,21 @@ gdk_draw_drawable (GdkDrawable *drawable,
      windows. We should clip that and (for windows with bg != None) clear that
      area in the destination instead. */
 
-  GDK_DRAWABLE_GET_CLASS (drawable)->draw_drawable (drawable, gc,
-						    composite_impl,
-                                                    xsrc - composite_x_offset,
-                                                    ysrc - composite_y_offset,
-                                                    xdest, ydest,
-                                                    width, height,
-						    src);
+  if (GDK_DRAWABLE_GET_CLASS (drawable)->draw_drawable_with_src)
+    GDK_DRAWABLE_GET_CLASS (drawable)->draw_drawable_with_src (drawable, gc,
+							       composite_impl,
+							       xsrc - composite_x_offset,
+							       ysrc - composite_y_offset,
+							       xdest, ydest,
+							       width, height,
+							       src);
+  else /* backwards compat for old out-of-tree implementations of GdkDrawable (are there any?) */
+    GDK_DRAWABLE_GET_CLASS (drawable)->draw_drawable (drawable, gc,
+						      composite_impl,
+						      xsrc - composite_x_offset,
+						      ysrc - composite_y_offset,
+						      xdest, ydest,
+						      width, height);
 
   g_object_unref (composite);
 }
diff --git a/gdk/gdkdrawable.h b/gdk/gdkdrawable.h
index 21af0d1..44beaf7 100644
--- a/gdk/gdkdrawable.h
+++ b/gdk/gdkdrawable.h
@@ -105,8 +105,7 @@ struct _GdkDrawableClass
 			  gint		xdest,
 			  gint		ydest,
 			  gint		width,
-			  gint		height,
-			  GdkDrawable  *original_src);
+			  gint		height);
   void (*draw_points)	 (GdkDrawable  *drawable,
 			  GdkGC	       *gc,
 			  GdkPoint     *points,
@@ -210,6 +209,17 @@ struct _GdkDrawableClass
 					     int width,
 					     int height);
 
+  void (*draw_drawable_with_src)  (GdkDrawable  *drawable,
+				   GdkGC	       *gc,
+				   GdkDrawable  *src,
+				   gint		xsrc,
+				   gint		ysrc,
+				   gint		xdest,
+				   gint		ydest,
+				   gint		width,
+				   gint		height,
+				   GdkDrawable  *original_src);
+
   /* Padding for future expansion */
   void         (*_gdk_reserved7)  (void);
   void         (*_gdk_reserved9)  (void);
@@ -219,7 +229,6 @@ struct _GdkDrawableClass
   void         (*_gdk_reserved13) (void);
   void         (*_gdk_reserved14) (void);
   void         (*_gdk_reserved15) (void);
-  void         (*_gdk_reserved16) (void);
 };
 
 struct _GdkTrapezoid
diff --git a/gdk/gdkoffscreenwindow.c b/gdk/gdkoffscreenwindow.c
index 8a020bb..438cc0c 100644
--- a/gdk/gdkoffscreenwindow.c
+++ b/gdk/gdkoffscreenwindow.c
@@ -1224,7 +1224,7 @@ gdk_offscreen_window_class_init (GdkOffscreenWindowClass *klass)
   drawable_class->draw_polygon = gdk_offscreen_window_draw_polygon;
   drawable_class->draw_text = gdk_offscreen_window_draw_text;
   drawable_class->draw_text_wc = gdk_offscreen_window_draw_text_wc;
-  drawable_class->draw_drawable = gdk_offscreen_window_draw_drawable;
+  drawable_class->draw_drawable_with_src = gdk_offscreen_window_draw_drawable;
   drawable_class->draw_points = gdk_offscreen_window_draw_points;
   drawable_class->draw_segments = gdk_offscreen_window_draw_segments;
   drawable_class->draw_lines = gdk_offscreen_window_draw_lines;
diff --git a/gdk/gdkpixmap.c b/gdk/gdkpixmap.c
index e9f33aa..3d29805 100644
--- a/gdk/gdkpixmap.c
+++ b/gdk/gdkpixmap.c
@@ -203,7 +203,7 @@ gdk_pixmap_class_init (GdkPixmapObjectClass *klass)
   drawable_class->draw_polygon = gdk_pixmap_draw_polygon;
   drawable_class->draw_text = gdk_pixmap_draw_text;
   drawable_class->draw_text_wc = gdk_pixmap_draw_text_wc;
-  drawable_class->draw_drawable = gdk_pixmap_draw_drawable;
+  drawable_class->draw_drawable_with_src = gdk_pixmap_draw_drawable;
   drawable_class->draw_points = gdk_pixmap_draw_points;
   drawable_class->draw_segments = gdk_pixmap_draw_segments;
   drawable_class->draw_lines = gdk_pixmap_draw_lines;
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index d15b660..cda7e83 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -419,7 +419,7 @@ gdk_window_class_init (GdkWindowObjectClass *klass)
   drawable_class->draw_polygon = gdk_window_draw_polygon;
   drawable_class->draw_text = gdk_window_draw_text;
   drawable_class->draw_text_wc = gdk_window_draw_text_wc;
-  drawable_class->draw_drawable = gdk_window_draw_drawable;
+  drawable_class->draw_drawable_with_src = gdk_window_draw_drawable;
   drawable_class->draw_points = gdk_window_draw_points;
   drawable_class->draw_segments = gdk_window_draw_segments;
   drawable_class->draw_lines = gdk_window_draw_lines;
diff --git a/gdk/quartz/gdkdrawable-quartz.c b/gdk/quartz/gdkdrawable-quartz.c
index be08c7d..b4b1e03 100644
--- a/gdk/quartz/gdkdrawable-quartz.c
+++ b/gdk/quartz/gdkdrawable-quartz.c
@@ -661,7 +661,7 @@ gdk_drawable_impl_quartz_class_init (GdkDrawableImplQuartzClass *klass)
   drawable_class->draw_polygon = gdk_quartz_draw_polygon;
   drawable_class->draw_text = gdk_quartz_draw_text;
   drawable_class->draw_text_wc = gdk_quartz_draw_text_wc;
-  drawable_class->draw_drawable = gdk_quartz_draw_drawable;
+  drawable_class->draw_drawable_with_src = gdk_quartz_draw_drawable;
   drawable_class->draw_points = gdk_quartz_draw_points;
   drawable_class->draw_segments = gdk_quartz_draw_segments;
   drawable_class->draw_lines = gdk_quartz_draw_lines;
diff --git a/gdk/win32/gdkdrawable-win32.c b/gdk/win32/gdkdrawable-win32.c
index e6c7e45..d5a4376 100644
--- a/gdk/win32/gdkdrawable-win32.c
+++ b/gdk/win32/gdkdrawable-win32.c
@@ -180,7 +180,7 @@ gdk_drawable_impl_win32_class_init (GdkDrawableImplWin32Class *klass)
   drawable_class->draw_polygon = gdk_win32_draw_polygon;
   drawable_class->draw_text = gdk_win32_draw_text;
   drawable_class->draw_text_wc = gdk_win32_draw_text_wc;
-  drawable_class->draw_drawable = gdk_win32_draw_drawable;
+  drawable_class->draw_drawable_with_src = gdk_win32_draw_drawable;
   drawable_class->draw_points = gdk_win32_draw_points;
   drawable_class->draw_segments = gdk_win32_draw_segments;
   drawable_class->draw_lines = gdk_win32_draw_lines;
diff --git a/gdk/x11/gdkdrawable-x11.c b/gdk/x11/gdkdrawable-x11.c
index 9a69a3b..537a47e 100644
--- a/gdk/x11/gdkdrawable-x11.c
+++ b/gdk/x11/gdkdrawable-x11.c
@@ -160,7 +160,7 @@ _gdk_drawable_impl_x11_class_init (GdkDrawableImplX11Class *klass)
   drawable_class->draw_polygon = gdk_x11_draw_polygon;
   drawable_class->draw_text = gdk_x11_draw_text;
   drawable_class->draw_text_wc = gdk_x11_draw_text_wc;
-  drawable_class->draw_drawable = gdk_x11_draw_drawable;
+  drawable_class->draw_drawable_with_src = gdk_x11_draw_drawable;
   drawable_class->draw_points = gdk_x11_draw_points;
   drawable_class->draw_segments = gdk_x11_draw_segments;
   drawable_class->draw_lines = gdk_x11_draw_lines;



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