onscreen: move swap_buffer apis to onscreen namespace

This moves all the cogl_framebuffer_ apis relating to swap buffer
requests into the cogl_onscreen_ namespace since on CoglOnscreen
framebuffers have back buffers that can be swapped.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
This commit is contained in:
Robert Bragg 2012-02-08 23:46:16 +00:00
parent 785e6375eb
commit 479c5fd2c9
9 changed files with 46 additions and 47 deletions

View File

@ -127,8 +127,9 @@ _cogl_onscreen_free (CoglOnscreen *onscreen)
} }
void void
cogl_framebuffer_swap_buffers (CoglFramebuffer *framebuffer) cogl_onscreen_swap_buffers (CoglOnscreen *onscreen)
{ {
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
const CoglWinsysVtable *winsys; const CoglWinsysVtable *winsys;
_COGL_RETURN_IF_FAIL (framebuffer->type == COGL_FRAMEBUFFER_TYPE_ONSCREEN); _COGL_RETURN_IF_FAIL (framebuffer->type == COGL_FRAMEBUFFER_TYPE_ONSCREEN);
@ -144,10 +145,11 @@ cogl_framebuffer_swap_buffers (CoglFramebuffer *framebuffer)
} }
void void
cogl_framebuffer_swap_region (CoglFramebuffer *framebuffer, cogl_onscreen_swap_region (CoglOnscreen *onscreen,
const int *rectangles, const int *rectangles,
int n_rectangles) int n_rectangles)
{ {
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
const CoglWinsysVtable *winsys; const CoglWinsysVtable *winsys;
_COGL_RETURN_IF_FAIL (framebuffer->type == COGL_FRAMEBUFFER_TYPE_ONSCREEN); _COGL_RETURN_IF_FAIL (framebuffer->type == COGL_FRAMEBUFFER_TYPE_ONSCREEN);
@ -254,11 +256,10 @@ cogl_win32_onscreen_get_window (CoglOnscreen *onscreen)
#endif /* COGL_HAS_WIN32_SUPPORT */ #endif /* COGL_HAS_WIN32_SUPPORT */
unsigned int unsigned int
cogl_framebuffer_add_swap_buffers_callback (CoglFramebuffer *framebuffer, cogl_onscreen_add_swap_buffers_callback (CoglOnscreen *onscreen,
CoglSwapBuffersNotify callback, CoglSwapBuffersNotify callback,
void *user_data) void *user_data)
{ {
CoglOnscreen *onscreen = COGL_ONSCREEN (framebuffer);
CoglSwapBuffersNotifyEntry *entry = g_slice_new0 (CoglSwapBuffersNotifyEntry); CoglSwapBuffersNotifyEntry *entry = g_slice_new0 (CoglSwapBuffersNotifyEntry);
static int next_swap_buffers_callback_id = 0; static int next_swap_buffers_callback_id = 0;
@ -272,10 +273,9 @@ cogl_framebuffer_add_swap_buffers_callback (CoglFramebuffer *framebuffer,
} }
void void
cogl_framebuffer_remove_swap_buffers_callback (CoglFramebuffer *framebuffer, cogl_onscreen_remove_swap_buffers_callback (CoglOnscreen *onscreen,
unsigned int id) unsigned int id)
{ {
CoglOnscreen *onscreen = COGL_ONSCREEN (framebuffer);
CoglSwapBuffersNotifyEntry *entry; CoglSwapBuffersNotifyEntry *entry;
COGL_TAILQ_FOREACH (entry, &onscreen->swap_callbacks, list_node) COGL_TAILQ_FOREACH (entry, &onscreen->swap_callbacks, list_node)

View File

@ -3,7 +3,7 @@
* *
* An object oriented GL/GLES Abstraction/Utility Layer * An object oriented GL/GLES Abstraction/Utility Layer
* *
* Copyright (C) 2011 Intel Corporation. * Copyright (C) 2011,2012 Intel Corporation.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -289,10 +289,9 @@ cogl_onscreen_show (CoglOnscreen *onscreen);
void void
cogl_onscreen_hide (CoglOnscreen *onscreen); cogl_onscreen_hide (CoglOnscreen *onscreen);
/* XXX: Actually should this be renamed too cogl_onscreen_swap_buffers()? */
/** /**
* cogl_framebuffer_swap_buffers: * cogl_onscreen_swap_buffers:
* @framebuffer: A #CoglFramebuffer * @onscreen: A #CoglOnscreen framebuffer
* *
* Swaps the current back buffer being rendered too, to the front for display. * Swaps the current back buffer being rendered too, to the front for display.
* *
@ -302,15 +301,15 @@ cogl_onscreen_hide (CoglOnscreen *onscreen);
* start a new frame that incrementally builds on the contents of the previous * start a new frame that incrementally builds on the contents of the previous
* frame. * frame.
* *
* Since: 1.8 * Since: 1.10
* Stability: unstable * Stability: unstable
*/ */
void void
cogl_framebuffer_swap_buffers (CoglFramebuffer *framebuffer); cogl_onscreen_swap_buffers (CoglOnscreen *onscreen);
/** /**
* cogl_framebuffer_swap_region: * cogl_onscreen_swap_region:
* @framebuffer: A #CoglFramebuffer * @onscreen: A #CoglOnscreen framebuffer
* @rectangles: An array of integer 4-tuples representing rectangles as * @rectangles: An array of integer 4-tuples representing rectangles as
* (x, y, width, height) tuples. * (x, y, width, height) tuples.
* @n_rectangles: The number of 4-tuples to be read from @rectangles * @n_rectangles: The number of 4-tuples to be read from @rectangles
@ -320,32 +319,32 @@ cogl_framebuffer_swap_buffers (CoglFramebuffer *framebuffer);
* defined by 4 sequential (x, y, width, height) integers. * defined by 4 sequential (x, y, width, height) integers.
* *
* This function also implicitly discards the contents of the color, depth and * This function also implicitly discards the contents of the color, depth and
* stencil buffers as if cogl_framebuffer_discard_buffers() were used. The * stencil buffers as if cogl_onscreen_discard_buffers() were used. The
* significance of the discard is that you should not expect to be able to * significance of the discard is that you should not expect to be able to
* start a new frame that incrementally builds on the contents of the previous * start a new frame that incrementally builds on the contents of the previous
* frame. * frame.
* *
* Since: 1.8 * Since: 1.10
* Stability: unstable * Stability: unstable
*/ */
void void
cogl_framebuffer_swap_region (CoglFramebuffer *framebuffer, cogl_onscreen_swap_region (CoglOnscreen *onscreen,
const int *rectangles, const int *rectangles,
int n_rectangles); int n_rectangles);
typedef void (*CoglSwapBuffersNotify) (CoglFramebuffer *framebuffer, typedef void (*CoglSwapBuffersNotify) (CoglFramebuffer *framebuffer,
void *user_data); void *user_data);
/** /**
* cogl_framebuffer_add_swap_buffers_callback: * cogl_onscreen_add_swap_buffers_callback:
* @framebuffer A #CoglFramebuffer * @onscreen: A #CoglOnscreen framebuffer
* @callback: A callback function to call when a swap has completed * @callback: A callback function to call when a swap has completed
* @user_data: A private pointer to be passed to @callback * @user_data: A private pointer to be passed to @callback
* *
* Installs a @callback function that should be called whenever a swap buffers * Installs a @callback function that should be called whenever a swap buffers
* request (made using cogl_framebuffer_swap_buffers()) for the given * request (made using cogl_onscreen_swap_buffers()) for the given
* @framebuffer completes. * @onscreen completes.
* *
* <note>Applications should check for the %COGL_FEATURE_ID_SWAP_BUFFERS_EVENT * <note>Applications should check for the %COGL_FEATURE_ID_SWAP_BUFFERS_EVENT
* feature before using this API. It's currently undefined when and if * feature before using this API. It's currently undefined when and if
@ -362,24 +361,24 @@ typedef void (*CoglSwapBuffersNotify) (CoglFramebuffer *framebuffer,
* Stability: unstable * Stability: unstable
*/ */
unsigned int unsigned int
cogl_framebuffer_add_swap_buffers_callback (CoglFramebuffer *framebuffer, cogl_onscreen_add_swap_buffers_callback (CoglOnscreen *onscreen,
CoglSwapBuffersNotify callback, CoglSwapBuffersNotify callback,
void *user_data); void *user_data);
/** /**
* cogl_framebuffer_remove_swap_buffers_callback: * cogl_onscreen_remove_swap_buffers_callback:
* @framebuffer: * @onscreen: A #CoglOnscreen framebuffer
* @id: An identifier returned from cogl_framebuffer_add_swap_buffers_callback() * @id: An identifier returned from cogl_onscreen_add_swap_buffers_callback()
* *
* Removes a callback that was previously registered * Removes a callback that was previously registered
* using cogl_framebuffer_add_swap_buffers_callback(). * using cogl_onscreen_add_swap_buffers_callback().
* *
* Since: 1.10 * Since: 1.10
* Stability: unstable * Stability: unstable
*/ */
void void
cogl_framebuffer_remove_swap_buffers_callback (CoglFramebuffer *framebuffer, cogl_onscreen_remove_swap_buffers_callback (CoglOnscreen *onscreen,
unsigned int id); unsigned int id);
G_END_DECLS G_END_DECLS

View File

@ -273,9 +273,9 @@ main (int argc, char **argv)
cogl_has_feature (ctx, COGL_FEATURE_ID_SWAP_BUFFERS_EVENT); cogl_has_feature (ctx, COGL_FEATURE_ID_SWAP_BUFFERS_EVENT);
if (has_swap_notify) if (has_swap_notify)
cogl_framebuffer_add_swap_buffers_callback (fb, cogl_onscreen_add_swap_buffers_callback (COGL_ONSCREEN (fb),
swap_notify_cb, swap_notify_cb,
&data); &data);
while (1) while (1)
{ {
@ -286,7 +286,7 @@ main (int argc, char **argv)
if (data.swap_ready) if (data.swap_ready)
{ {
paint (&data); paint (&data);
cogl_framebuffer_swap_buffers (fb); cogl_onscreen_swap_buffers (COGL_ONSCREEN (fb));
} }
cogl_poll_get_info (ctx, &poll_fds, &n_poll_fds, &timeout); cogl_poll_get_info (ctx, &poll_fds, &n_poll_fds, &timeout);

View File

@ -41,7 +41,7 @@ main (int argc, char **argv)
cogl_framebuffer_clear4f (fb, COGL_BUFFER_BIT_COLOR, 0, 0, 0, 1); cogl_framebuffer_clear4f (fb, COGL_BUFFER_BIT_COLOR, 0, 0, 0, 1);
cogl_framebuffer_draw_primitive (fb, pipeline, triangle); cogl_framebuffer_draw_primitive (fb, pipeline, triangle);
cogl_framebuffer_swap_buffers (fb); cogl_onscreen_swap_buffers (onscreen);
cogl_poll_get_info (ctx, &poll_fds, &n_poll_fds, &timeout); cogl_poll_get_info (ctx, &poll_fds, &n_poll_fds, &timeout);
g_poll ((GPollFD *) poll_fds, n_poll_fds, 0); g_poll ((GPollFD *) poll_fds, n_poll_fds, 0);

View File

@ -102,7 +102,7 @@ main (int argc, char **argv)
cogl_set_source_texture (tex); cogl_set_source_texture (tex);
cogl_rectangle (0, 1, 1, -1); cogl_rectangle (0, 1, 1, -1);
cogl_framebuffer_swap_buffers (fb); cogl_onscreen_swap_buffers (onscreen);
cogl_poll_get_info (ctx, &poll_fds, &n_poll_fds, &timeout); cogl_poll_get_info (ctx, &poll_fds, &n_poll_fds, &timeout);
g_poll ((GPollFD *) poll_fds, n_poll_fds, 0); g_poll ((GPollFD *) poll_fds, n_poll_fds, 0);

View File

@ -28,7 +28,7 @@ redraw (Data *data)
cogl_framebuffer_draw_primitive (fb, data->pipeline, data->triangle); cogl_framebuffer_draw_primitive (fb, data->pipeline, data->triangle);
cogl_framebuffer_pop_matrix (fb); cogl_framebuffer_pop_matrix (fb);
cogl_framebuffer_swap_buffers (fb); cogl_onscreen_swap_buffers (COGL_ONSCREEN (fb));
} }
static void static void

View File

@ -172,7 +172,7 @@ main (int argc, char **argv)
} }
cogl_framebuffer_clear4f (fb, COGL_BUFFER_BIT_COLOR, 0, 0, 0, 1); cogl_framebuffer_clear4f (fb, COGL_BUFFER_BIT_COLOR, 0, 0, 0, 1);
cogl_framebuffer_draw_primitive (fb, pipeline, triangle); cogl_framebuffer_draw_primitive (fb, pipeline, triangle);
cogl_framebuffer_swap_buffers (fb); cogl_onscreen_swap_buffers (onscreen);
cogl_poll_get_info (ctx, &poll_fds, &n_poll_fds, &timeout); cogl_poll_get_info (ctx, &poll_fds, &n_poll_fds, &timeout);
g_poll ((GPollFD *) poll_fds, n_poll_fds, 0); g_poll ((GPollFD *) poll_fds, n_poll_fds, 0);

View File

@ -217,7 +217,7 @@ main (int argc, char **argv)
cogl_framebuffer_clear4f (fb, COGL_BUFFER_BIT_COLOR, 0, 0, 0, 1); cogl_framebuffer_clear4f (fb, COGL_BUFFER_BIT_COLOR, 0, 0, 0, 1);
cogl_set_source_texture (tfp); cogl_set_source_texture (tfp);
cogl_rectangle (-0.8, 0.8, 0.8, -0.8); cogl_rectangle (-0.8, 0.8, 0.8, -0.8);
cogl_framebuffer_swap_buffers (fb); cogl_onscreen_swap_buffers (onscreen);
} }
return 0; return 0;

View File

@ -527,7 +527,7 @@ paint_cb (void *user_data)
cogl_rectangle (-1, 1, 1, -1); cogl_rectangle (-1, 1, 1, -1);
} }
} }
cogl_framebuffer_swap_buffers (fb); cogl_onscreen_swap_buffers (COGL_ONSCREEN (fb));
cogl_pop_framebuffer (); cogl_pop_framebuffer ();
} }