}
static void
+_tbm_surface_queue_need_attach(tbm_surface_queue_h surface_queue)
+{
+ tbm_surface_h surface;
+
+ if (surface_queue->queue_size == surface_queue->num_attached)
+ return;
+
+ if (surface_queue->alloc_cb) {
+ surface = surface_queue->alloc_cb(surface_queue, surface_queue->alloc_cb_data);
+
+ /* silent return */
+ if (!surface)
+ return;
+
+ tbm_surface_internal_ref(surface);
+ } else {
+ surface = tbm_surface_internal_create_with_flags(surface_queue->width,
+ surface_queue->height,
+ surface_queue->format,
+ surface_queue->flags);
+ TBM_RETURN_IF_FAIL(surface != NULL);
+ }
+
+ _tbm_surface_queue_attach(surface_queue, surface);
+ tbm_surface_internal_unref(surface);
+}
+
+static void
_tbm_surface_queue_detach(tbm_surface_queue_h surface_queue,
tbm_surface_h surface)
{
if (_queue_is_empty(&surface_queue->free_queue)) {
if (surface_queue->impl && surface_queue->impl->need_attach)
surface_queue->impl->need_attach(surface_queue);
+ else
+ _tbm_surface_queue_need_attach(surface_queue);
}
if (surface_queue->impl && surface_queue->impl->dequeue)
if (_queue_is_empty(&surface_queue->free_queue)) {
if (surface_queue->impl && surface_queue->impl->need_attach)
surface_queue->impl->need_attach(surface_queue);
+ else
+ _tbm_surface_queue_need_attach(surface_queue);
}
if (!_queue_is_empty(&surface_queue->free_queue)) {
if (_queue_is_empty(&surface_queue->free_queue)) {
if (surface_queue->impl && surface_queue->impl->need_attach)
surface_queue->impl->need_attach(surface_queue);
+ else
+ _tbm_surface_queue_need_attach(surface_queue);
}
if (!_queue_is_empty(&surface_queue->free_queue)) {
return TBM_SURFACE_QUEUE_ERROR_NONE;
}
-static void
-__tbm_queue_default_need_attach(tbm_surface_queue_h surface_queue)
-{
- tbm_surface_h surface;
-
- if (surface_queue->queue_size == surface_queue->num_attached)
- return;
-
- if (surface_queue->alloc_cb) {
- surface = surface_queue->alloc_cb(surface_queue, surface_queue->alloc_cb_data);
-
- /* silent return */
- if (!surface)
- return;
-
- tbm_surface_internal_ref(surface);
- } else {
- surface = tbm_surface_internal_create_with_flags(surface_queue->width,
- surface_queue->height,
- surface_queue->format,
- surface_queue->flags);
- TBM_RETURN_IF_FAIL(surface != NULL);
- }
-
- _tbm_surface_queue_attach(surface_queue, surface);
- tbm_surface_internal_unref(surface);
-}
-
static const tbm_surface_queue_interface tbm_queue_default_impl = {
NULL, /*__tbm_queue_default_init*/
NULL, /*__tbm_queue_default_reset*/
NULL, /*__tbm_queue_default_destroy*/
- __tbm_queue_default_need_attach,
+ NULL, /*__tbm_queue_default_need_attach*/
NULL, /*__tbm_queue_default_enqueue*/
NULL, /*__tbm_queue_default_release*/
NULL, /*__tbm_queue_default_dequeue*/
}
static void
-__tbm_queue_sequence_need_attach(tbm_surface_queue_h surface_queue)
-{
- tbm_surface_h surface;
-
- if (surface_queue->queue_size == surface_queue->num_attached)
- return;
-
- if (surface_queue->alloc_cb) {
- surface = surface_queue->alloc_cb(surface_queue, surface_queue->alloc_cb_data);
-
- /* silent return */
- if (!surface)
- return;
-
- tbm_surface_internal_ref(surface);
- } else {
- surface = tbm_surface_internal_create_with_flags(surface_queue->width,
- surface_queue->height,
- surface_queue->format,
- surface_queue->flags);
- TBM_RETURN_IF_FAIL(surface != NULL);
- }
-
- _tbm_surface_queue_attach(surface_queue, surface);
- tbm_surface_internal_unref(surface);
-}
-
-static void
__tbm_queue_sequence_enqueue(tbm_surface_queue_h surface_queue,
queue_node *node)
{
__tbm_queue_sequence_init,
__tbm_queue_sequence_reset,
__tbm_queue_sequence_destroy,
- __tbm_queue_sequence_need_attach,
+ NULL,
__tbm_queue_sequence_enqueue,
__tbm_queue_sequence_release,
__tbm_queue_sequence_dequeue,