From adfb561258d2676fdebc7cdbfd3501a9be6e34b2 Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Tue, 29 Jan 2013 16:08:36 +0000 Subject: [PATCH] cogl-gles2-context: use new _add_frame_callback api This updates cogl-gles2-context to use the new cogl_onscreen_add_frame_callback() api to use _SYNC events for throttling. (cherry picked from commit 2063306645e32ceb3252ebcd2eebd33c879d7fbe) --- examples/cogl-gles2-context.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/examples/cogl-gles2-context.c b/examples/cogl-gles2-context.c index 70aed2f47..63c1a6dcf 100644 --- a/examples/cogl-gles2-context.c +++ b/examples/cogl-gles2-context.c @@ -50,19 +50,16 @@ paint_cb (void *user_data) 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) { + if (event == COGL_FRAME_EVENT_SYNC) g_idle_add (paint_cb, user_data); } @@ -128,9 +125,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);