diff options
Diffstat (limited to 'libmate-desktop/mate-bg-crossfade.c')
-rw-r--r-- | libmate-desktop/mate-bg-crossfade.c | 84 |
1 files changed, 54 insertions, 30 deletions
diff --git a/libmate-desktop/mate-bg-crossfade.c b/libmate-desktop/mate-bg-crossfade.c index 2f72046..0642c5b 100644 --- a/libmate-desktop/mate-bg-crossfade.c +++ b/libmate-desktop/mate-bg-crossfade.c @@ -19,7 +19,6 @@ * * Author: Ray Strode <[email protected]> */ - #include <string.h> #include <math.h> #include <stdarg.h> @@ -44,8 +43,15 @@ struct _MateBGCrossfadePrivate GdkWindow *window; int width; int height; - GdkPixmap *fading_pixmap; - GdkPixmap *end_pixmap; + + #if GTK_CHECK_VERSION(3, 0, 0) + cairo_surface_t* fading_pixmap; + cairo_surface_t* end_pixmap; + #else + GdkPixmap* fading_pixmap; + GdkPixmap* end_pixmap; + #endif + gdouble start_time; gdouble total_duration; guint timeout_id; @@ -219,49 +225,59 @@ mate_bg_crossfade_init (MateBGCrossfade *fade) * * Return value: the new #MateBGCrossfade **/ -MateBGCrossfade * -mate_bg_crossfade_new (int width, - int height) +MateBGCrossfade* mate_bg_crossfade_new(int width, int height) { - GObject *object; + GObject* object; - object = g_object_new (MATE_TYPE_BG_CROSSFADE, - "width", width, - "height", height, NULL); + object = g_object_new(MATE_TYPE_BG_CROSSFADE, + "width", width, + "height", height, + NULL); - return (MateBGCrossfade *) object; + return (MateBGCrossfade*) object; } -static GdkPixmap * -tile_pixmap (GdkPixmap *pixmap, - int width, - int height) +#if GTK_CHECK_VERSION(3, 0, 0) + static cairo_surface_t* tile_pixmap(cairo_surface_t* pixmap, int width, int height) +#else + static GdkPixmap* tile_pixmap(GdkPixmap* pixmap, int width, int height) +#endif { - GdkPixmap *copy; + #if GTK_CHECK_VERSION(3, 0, 0) + cairo_surface_t* copy; + #else + GdkPixmap* copy; + #endif + cairo_t *cr; - copy = gdk_pixmap_new (pixmap, width, height, pixmap == NULL? 24 : -1); + copy = gdk_pixmap_new(pixmap, width, height, pixmap == NULL? 24 : -1); - cr = gdk_cairo_create (copy); + cr = gdk_cairo_create(copy); - if (pixmap != NULL) { + if (pixmap != NULL) + { cairo_pattern_t *pattern; gdk_cairo_set_source_pixmap (cr, pixmap, 0.0, 0.0); pattern = cairo_get_source (cr); cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - } else { + } + else + { GtkStyle *style; style = gtk_widget_get_default_style (); - gdk_cairo_set_source_color (cr, &style->bg[GTK_STATE_NORMAL]); + gdk_cairo_set_source_color(cr, &style->bg[GTK_STATE_NORMAL]); } cairo_paint (cr); - if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) { + if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) + { g_object_unref (copy); copy = NULL; } - cairo_destroy (cr); + + cairo_destroy(cr); return copy; } @@ -278,9 +294,11 @@ tile_pixmap (GdkPixmap *pixmap, * Return value: %TRUE if successful, or %FALSE if the pixmap * could not be copied. **/ -gboolean -mate_bg_crossfade_set_start_pixmap (MateBGCrossfade *fade, - GdkPixmap *pixmap) +#if GTK_CHECK_VERSION(3, 0, 0) + gboolean mate_bg_crossfade_set_start_pixmap(MateBGCrossfade* fade, cairo_surface_t* pixmap) +#else + gboolean mate_bg_crossfade_set_start_pixmap(MateBGCrossfade* fade, GdkPixmap* pixmap) +#endif { /* I am disabling this because background fade break the mate-file-manager * Estoy deshabilitando esto por que el efecto de desvanecimiento del fondo de pantalla, hace @@ -331,9 +349,11 @@ get_current_time (void) * Return value: %TRUE if successful, or %FALSE if the pixmap * could not be copied. **/ -gboolean -mate_bg_crossfade_set_end_pixmap (MateBGCrossfade *fade, - GdkPixmap *pixmap) +#if GTK_CHECK_VERSION(3, 0, 0) + gboolean mate_bg_crossfade_set_end_pixmap(MateBGCrossfade* fade, cairo_surface_t* pixmap) +#else + gboolean mate_bg_crossfade_set_end_pixmap(MateBGCrossfade* fade, GdkPixmap* pixmap) +#endif { g_return_val_if_fail (MATE_IS_BG_CROSSFADE (fade), FALSE); @@ -361,7 +381,11 @@ animations_are_disabled (MateBGCrossfade *fade) g_assert (fade->priv->window != NULL); - screen = gdk_drawable_get_screen (fade->priv->window); + #if GTK_CHECK_VERSION(2, 24, 0) + screen = gdk_window_get_screen(fade->priv->window); + #else // since 2.2 + screen = gdk_drawable_get_screen(GDK_DRAWABLE(fade->priv->window)); + #endif settings = gtk_settings_get_for_screen (screen); |