[gnome-screensaver] floaters: Use new gtk3 draw signal
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-screensaver] floaters: Use new gtk3 draw signal
- Date: Thu, 30 Sep 2010 06:16:03 +0000 (UTC)
commit 84a3a2ad08fb6f621f75f8752ee931dda8ebba45
Author: Ray Strode <rstrode redhat com>
Date: Wed Sep 29 23:51:11 2010 -0400
floaters: Use new gtk3 draw signal
expose-event has gone the way of the dodo. This
commit makes the floaters conform to the rules of
today.
savers/floaters.c | 35 +++++++----------------------------
1 files changed, 7 insertions(+), 28 deletions(-)
---
diff --git a/savers/floaters.c b/savers/floaters.c
index e3be5e9..2daee4a 100644
--- a/savers/floaters.c
+++ b/savers/floaters.c
@@ -271,8 +271,8 @@ static void screen_saver_create_floaters (ScreenSaver *screen_saver);
static void screen_saver_destroy_floaters (ScreenSaver *screen_saver);
static void screen_saver_on_size_allocate (ScreenSaver *screen_saver,
GtkAllocation *allocation);
-static void screen_saver_on_expose_event (ScreenSaver *screen_saver,
- GdkEventExpose *event);
+static void screen_saver_on_draw_request (ScreenSaver *screen_saver,
+ cairo_t *context);
static gboolean do_print_screen_saver_stats (ScreenSaver *screen_saver);
static GdkPixbuf *gamma_correct (const GdkPixbuf *input_pixbuf);
@@ -846,8 +846,8 @@ screen_saver_new (GtkDrawingArea *drawing_area,
G_CALLBACK (screen_saver_on_size_allocate),
screen_saver);
- g_signal_connect_swapped (G_OBJECT (drawing_area), "expose-event",
- G_CALLBACK (screen_saver_on_expose_event),
+ g_signal_connect_swapped (G_OBJECT (drawing_area), "draw",
+ G_CALLBACK (screen_saver_on_draw_request),
screen_saver);
screen_saver->first_update_time = 0.0;
@@ -997,45 +997,26 @@ compare_floaters (ScreenSaverFloater *a,
}
static void
-screen_saver_on_expose_event (ScreenSaver *screen_saver,
- GdkEventExpose *event)
+screen_saver_on_draw_request (ScreenSaver *screen_saver,
+ cairo_t *context)
{
GList *tmp;
- cairo_t *context;
if (screen_saver->floaters == NULL)
screen_saver_create_floaters (screen_saver);
- context = gdk_cairo_create (gtk_widget_get_window (screen_saver->drawing_area));
-
- cairo_rectangle (context,
- (double) event->area.x,
- (double) event->area.y,
- (double) event->area.width,
- (double) event->area.height);
- cairo_clip (context);
-
screen_saver->floaters = g_list_sort (screen_saver->floaters,
(GCompareFunc)compare_floaters);
for (tmp = screen_saver->floaters; tmp != NULL; tmp = tmp->next)
{
ScreenSaverFloater *floater;
- cairo_rectangle_int_t rect;
gint size;
floater = (ScreenSaverFloater *) tmp->data;
size = CLAMP ((int) (FLOATER_MAX_SIZE * floater->scale),
- FLOATER_MIN_SIZE, FLOATER_MAX_SIZE);
-
- rect.x = (int) (floater->position.x - .5 * G_SQRT2 * size);
- rect.y = (int) (floater->position.y - .5 * G_SQRT2 * size);
- rect.width = G_SQRT2 * size;
- rect.height = G_SQRT2 * size;
-
- if (!cairo_region_contains_rectangle (event->region, &rect))
- continue;
+ FLOATER_MIN_SIZE, FLOATER_MAX_SIZE);
if (!screen_saver_floater_do_draw (screen_saver, floater, context))
{
@@ -1044,8 +1025,6 @@ screen_saver_on_expose_event (ScreenSaver *screen_saver,
}
}
- cairo_destroy (context);
-
screen_saver->draw_ops_pending = TRUE;
screen_saver->frame_count++;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]