[gtk+] Make GdkDrawable draw_drawable backwards compat
- From: Alexander Larsson <alexl src gnome org>
- To: svn-commits-list gnome org
- Subject: [gtk+] Make GdkDrawable draw_drawable backwards compat
- Date: Wed, 1 Jul 2009 17:55:48 +0000 (UTC)
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]