From 51c1b3fbffaf9dd830e635a40e0f24c4795e5785 Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Tue, 29 Jan 2013 16:08:36 +0000 Subject: [PATCH] cogl-hello: use new _add_frame_callback api This updates cogl-hello to use the new cogl_onscreen_add_frame_callback() api to use _SYNC events for throttling. Reviewed-by: Neil Roberts (cherry picked from commit 06d3cb0d99944e0150e30d553d248feb5f049000) --- examples/cogl-hello.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/examples/cogl-hello.c b/examples/cogl-hello.c index f8265f91d..8d86a9738 100644 --- a/examples/cogl-hello.c +++ b/examples/cogl-hello.c @@ -19,20 +19,17 @@ paint_cb (void *user_data) cogl_framebuffer_draw_primitive (data->fb, data->pipeline, data->triangle); cogl_onscreen_swap_buffers (COGL_ONSCREEN (data->fb)); - /* If the driver can deliver swap complete events then we can remove - * the idle paint callback until we next get a swap complete event - * otherwise we keep the idle paint callback installed and simply - * paint as fast as the driver will allow... */ - if (cogl_has_feature (data->ctx, COGL_FEATURE_ID_SWAP_BUFFERS_EVENT)) - return FALSE; /* remove the callback */ - else - return TRUE; + return FALSE; /* remove the callback */ } static void -swap_complete_cb (CoglFramebuffer *framebuffer, void *user_data) +frame_event_cb (CoglOnscreen *onscreen, + CoglFrameEvent event, + CoglFrameInfo *info, + void *user_data) { - g_idle_add (paint_cb, user_data); + if (event == COGL_FRAME_EVENT_SYNC) + g_idle_add (paint_cb, user_data); } int @@ -70,10 +67,10 @@ main (int argc, char **argv) g_source_attach (cogl_source, NULL); - if (cogl_has_feature (data.ctx, COGL_FEATURE_ID_SWAP_BUFFERS_EVENT)) - cogl_onscreen_add_swap_buffers_callback (COGL_ONSCREEN (data.fb), - swap_complete_cb, &data); - + cogl_onscreen_add_frame_callback (COGL_ONSCREEN (data.fb), + frame_event_cb, + &data, + NULL); /* destroy notify */ g_idle_add (paint_cb, &data); loop = g_main_loop_new (NULL, TRUE);