renderer-native: Meta:ify a struct
Rename a struct from the old Cogl style to mutter style naming and conventions. https://bugzilla.gnome.org/show_bug.cgi?id=768976
This commit is contained in:
parent
566c28bdaf
commit
44b163e39b
@ -60,6 +60,19 @@ enum
|
|||||||
PROP_LAST
|
PROP_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct _MetaOnscreenNative
|
||||||
|
{
|
||||||
|
struct gbm_surface *surface;
|
||||||
|
uint32_t current_fb_id;
|
||||||
|
uint32_t next_fb_id;
|
||||||
|
struct gbm_bo *current_bo;
|
||||||
|
struct gbm_bo *next_bo;
|
||||||
|
gboolean pending_swap_notify;
|
||||||
|
|
||||||
|
EGLSurface *pending_egl_surface;
|
||||||
|
struct gbm_surface *pending_surface;
|
||||||
|
} MetaOnscreenNative;
|
||||||
|
|
||||||
struct _MetaRendererNative
|
struct _MetaRendererNative
|
||||||
{
|
{
|
||||||
MetaRenderer parent;
|
MetaRenderer parent;
|
||||||
@ -87,19 +100,6 @@ G_DEFINE_TYPE_WITH_CODE (MetaRendererNative,
|
|||||||
static const CoglWinsysEGLVtable _cogl_winsys_egl_vtable;
|
static const CoglWinsysEGLVtable _cogl_winsys_egl_vtable;
|
||||||
static const CoglWinsysVtable *parent_vtable;
|
static const CoglWinsysVtable *parent_vtable;
|
||||||
|
|
||||||
typedef struct _CoglOnscreenKMS
|
|
||||||
{
|
|
||||||
struct gbm_surface *surface;
|
|
||||||
uint32_t current_fb_id;
|
|
||||||
uint32_t next_fb_id;
|
|
||||||
struct gbm_bo *current_bo;
|
|
||||||
struct gbm_bo *next_bo;
|
|
||||||
CoglBool pending_swap_notify;
|
|
||||||
|
|
||||||
EGLSurface *pending_egl_surface;
|
|
||||||
struct gbm_surface *pending_surface;
|
|
||||||
} CoglOnscreenKMS;
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_cogl_winsys_renderer_disconnect (CoglRenderer *renderer)
|
_cogl_winsys_renderer_disconnect (CoglRenderer *renderer)
|
||||||
{
|
{
|
||||||
@ -121,15 +121,16 @@ flush_pending_swap_notify_cb (void *data,
|
|||||||
{
|
{
|
||||||
CoglOnscreen *onscreen = COGL_ONSCREEN (framebuffer);
|
CoglOnscreen *onscreen = COGL_ONSCREEN (framebuffer);
|
||||||
CoglOnscreenEGL *egl_onscreen = onscreen->winsys;
|
CoglOnscreenEGL *egl_onscreen = onscreen->winsys;
|
||||||
CoglOnscreenKMS *kms_onscreen = egl_onscreen->platform;
|
MetaOnscreenNative *onscreen_native = egl_onscreen->platform;
|
||||||
|
|
||||||
if (kms_onscreen->pending_swap_notify)
|
if (onscreen_native->pending_swap_notify)
|
||||||
{
|
{
|
||||||
CoglFrameInfo *info = g_queue_pop_head (&onscreen->pending_frame_infos);
|
CoglFrameInfo *info =
|
||||||
|
g_queue_pop_head (&onscreen->pending_frame_infos);
|
||||||
|
|
||||||
_cogl_onscreen_notify_frame_sync (onscreen, info);
|
_cogl_onscreen_notify_frame_sync (onscreen, info);
|
||||||
_cogl_onscreen_notify_complete (onscreen, info);
|
_cogl_onscreen_notify_complete (onscreen, info);
|
||||||
kms_onscreen->pending_swap_notify = FALSE;
|
onscreen_native->pending_swap_notify = FALSE;
|
||||||
|
|
||||||
cogl_object_unref (info);
|
cogl_object_unref (info);
|
||||||
}
|
}
|
||||||
@ -157,23 +158,23 @@ static void
|
|||||||
free_current_bo (CoglOnscreen *onscreen)
|
free_current_bo (CoglOnscreen *onscreen)
|
||||||
{
|
{
|
||||||
CoglOnscreenEGL *egl_onscreen = onscreen->winsys;
|
CoglOnscreenEGL *egl_onscreen = onscreen->winsys;
|
||||||
CoglOnscreenKMS *kms_onscreen = egl_onscreen->platform;
|
MetaOnscreenNative *onscreen_native = egl_onscreen->platform;
|
||||||
CoglContext *context = COGL_FRAMEBUFFER (onscreen)->context;
|
CoglContext *context = COGL_FRAMEBUFFER (onscreen)->context;
|
||||||
CoglRenderer *renderer = context->display->renderer;
|
CoglRenderer *renderer = context->display->renderer;
|
||||||
CoglRendererEGL *egl_renderer = renderer->winsys;
|
CoglRendererEGL *egl_renderer = renderer->winsys;
|
||||||
MetaRendererNative *renderer_native = egl_renderer->platform;
|
MetaRendererNative *renderer_native = egl_renderer->platform;
|
||||||
|
|
||||||
if (kms_onscreen->current_fb_id)
|
if (onscreen_native->current_fb_id)
|
||||||
{
|
{
|
||||||
drmModeRmFB (renderer_native->kms_fd,
|
drmModeRmFB (renderer_native->kms_fd,
|
||||||
kms_onscreen->current_fb_id);
|
onscreen_native->current_fb_id);
|
||||||
kms_onscreen->current_fb_id = 0;
|
onscreen_native->current_fb_id = 0;
|
||||||
}
|
}
|
||||||
if (kms_onscreen->current_bo)
|
if (onscreen_native->current_bo)
|
||||||
{
|
{
|
||||||
gbm_surface_release_buffer (kms_onscreen->surface,
|
gbm_surface_release_buffer (onscreen_native->surface,
|
||||||
kms_onscreen->current_bo);
|
onscreen_native->current_bo);
|
||||||
kms_onscreen->current_bo = NULL;
|
onscreen_native->current_bo = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -181,7 +182,7 @@ static void
|
|||||||
queue_swap_notify_for_onscreen (CoglOnscreen *onscreen)
|
queue_swap_notify_for_onscreen (CoglOnscreen *onscreen)
|
||||||
{
|
{
|
||||||
CoglOnscreenEGL *egl_onscreen = onscreen->winsys;
|
CoglOnscreenEGL *egl_onscreen = onscreen->winsys;
|
||||||
CoglOnscreenKMS *kms_onscreen = egl_onscreen->platform;
|
MetaOnscreenNative *onscreen_native = egl_onscreen->platform;
|
||||||
CoglContext *context = COGL_FRAMEBUFFER (onscreen)->context;
|
CoglContext *context = COGL_FRAMEBUFFER (onscreen)->context;
|
||||||
CoglRenderer *renderer = context->display->renderer;
|
CoglRenderer *renderer = context->display->renderer;
|
||||||
CoglRendererEGL *egl_renderer = renderer->winsys;
|
CoglRendererEGL *egl_renderer = renderer->winsys;
|
||||||
@ -199,7 +200,7 @@ queue_swap_notify_for_onscreen (CoglOnscreen *onscreen)
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
kms_onscreen->pending_swap_notify = TRUE;
|
onscreen_native->pending_swap_notify = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static CoglBool
|
static CoglBool
|
||||||
@ -355,17 +356,17 @@ flip_callback (void *user_data)
|
|||||||
{
|
{
|
||||||
CoglOnscreen *onscreen = user_data;
|
CoglOnscreen *onscreen = user_data;
|
||||||
CoglOnscreenEGL *egl_onscreen = onscreen->winsys;
|
CoglOnscreenEGL *egl_onscreen = onscreen->winsys;
|
||||||
CoglOnscreenKMS *kms_onscreen = egl_onscreen->platform;
|
MetaOnscreenNative *onscreen_native = egl_onscreen->platform;
|
||||||
|
|
||||||
queue_swap_notify_for_onscreen (onscreen);
|
queue_swap_notify_for_onscreen (onscreen);
|
||||||
|
|
||||||
free_current_bo (onscreen);
|
free_current_bo (onscreen);
|
||||||
|
|
||||||
kms_onscreen->current_fb_id = kms_onscreen->next_fb_id;
|
onscreen_native->current_fb_id = onscreen_native->next_fb_id;
|
||||||
kms_onscreen->next_fb_id = 0;
|
onscreen_native->next_fb_id = 0;
|
||||||
|
|
||||||
kms_onscreen->current_bo = kms_onscreen->next_bo;
|
onscreen_native->current_bo = onscreen_native->next_bo;
|
||||||
kms_onscreen->next_bo = NULL;
|
onscreen_native->next_bo = NULL;
|
||||||
|
|
||||||
cogl_object_unref (onscreen);
|
cogl_object_unref (onscreen);
|
||||||
}
|
}
|
||||||
@ -385,22 +386,22 @@ _cogl_winsys_onscreen_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
|||||||
CoglRendererEGL *egl_renderer = renderer->winsys;
|
CoglRendererEGL *egl_renderer = renderer->winsys;
|
||||||
MetaRendererNative *renderer_native = egl_renderer->platform;
|
MetaRendererNative *renderer_native = egl_renderer->platform;
|
||||||
CoglOnscreenEGL *egl_onscreen = onscreen->winsys;
|
CoglOnscreenEGL *egl_onscreen = onscreen->winsys;
|
||||||
CoglOnscreenKMS *kms_onscreen = egl_onscreen->platform;
|
MetaOnscreenNative *onscreen_native = egl_onscreen->platform;
|
||||||
uint32_t handle, stride;
|
uint32_t handle, stride;
|
||||||
gboolean fb_in_use;
|
gboolean fb_in_use;
|
||||||
uint32_t next_fb_id;
|
uint32_t next_fb_id;
|
||||||
|
|
||||||
/* If we already have a pending swap then block until it completes */
|
/* If we already have a pending swap then block until it completes */
|
||||||
while (kms_onscreen->next_fb_id != 0)
|
while (onscreen_native->next_fb_id != 0)
|
||||||
meta_monitor_manager_kms_wait_for_flip (monitor_manager_kms);
|
meta_monitor_manager_kms_wait_for_flip (monitor_manager_kms);
|
||||||
|
|
||||||
if (kms_onscreen->pending_egl_surface)
|
if (onscreen_native->pending_egl_surface)
|
||||||
{
|
{
|
||||||
CoglFramebuffer *fb = COGL_FRAMEBUFFER (renderer_native->onscreen);
|
CoglFramebuffer *fb = COGL_FRAMEBUFFER (renderer_native->onscreen);
|
||||||
|
|
||||||
eglDestroySurface (egl_renderer->edpy, egl_onscreen->egl_surface);
|
eglDestroySurface (egl_renderer->edpy, egl_onscreen->egl_surface);
|
||||||
egl_onscreen->egl_surface = kms_onscreen->pending_egl_surface;
|
egl_onscreen->egl_surface = onscreen_native->pending_egl_surface;
|
||||||
kms_onscreen->pending_egl_surface = NULL;
|
onscreen_native->pending_egl_surface = NULL;
|
||||||
|
|
||||||
_cogl_framebuffer_winsys_update_size (fb,
|
_cogl_framebuffer_winsys_update_size (fb,
|
||||||
renderer_native->width,
|
renderer_native->width,
|
||||||
@ -411,19 +412,20 @@ _cogl_winsys_onscreen_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
|||||||
rectangles,
|
rectangles,
|
||||||
n_rectangles);
|
n_rectangles);
|
||||||
|
|
||||||
if (kms_onscreen->pending_surface)
|
if (onscreen_native->pending_surface)
|
||||||
{
|
{
|
||||||
free_current_bo (onscreen);
|
free_current_bo (onscreen);
|
||||||
if (kms_onscreen->surface)
|
if (onscreen_native->surface)
|
||||||
gbm_surface_destroy (kms_onscreen->surface);
|
gbm_surface_destroy (onscreen_native->surface);
|
||||||
kms_onscreen->surface = kms_onscreen->pending_surface;
|
onscreen_native->surface = onscreen_native->pending_surface;
|
||||||
kms_onscreen->pending_surface = NULL;
|
onscreen_native->pending_surface = NULL;
|
||||||
}
|
}
|
||||||
/* Now we need to set the CRTC to whatever is the front buffer */
|
/* Now we need to set the CRTC to whatever is the front buffer */
|
||||||
kms_onscreen->next_bo = gbm_surface_lock_front_buffer (kms_onscreen->surface);
|
onscreen_native->next_bo =
|
||||||
|
gbm_surface_lock_front_buffer (onscreen_native->surface);
|
||||||
|
|
||||||
stride = gbm_bo_get_stride (kms_onscreen->next_bo);
|
stride = gbm_bo_get_stride (onscreen_native->next_bo);
|
||||||
handle = gbm_bo_get_handle (kms_onscreen->next_bo).u32;
|
handle = gbm_bo_get_handle (onscreen_native->next_bo).u32;
|
||||||
|
|
||||||
if (drmModeAddFB (renderer_native->kms_fd,
|
if (drmModeAddFB (renderer_native->kms_fd,
|
||||||
renderer_native->width,
|
renderer_native->width,
|
||||||
@ -432,13 +434,13 @@ _cogl_winsys_onscreen_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
|||||||
32, /* bpp */
|
32, /* bpp */
|
||||||
stride,
|
stride,
|
||||||
handle,
|
handle,
|
||||||
&kms_onscreen->next_fb_id))
|
&onscreen_native->next_fb_id))
|
||||||
{
|
{
|
||||||
g_warning ("Failed to create new back buffer handle: %m");
|
g_warning ("Failed to create new back buffer handle: %m");
|
||||||
gbm_surface_release_buffer (kms_onscreen->surface,
|
gbm_surface_release_buffer (onscreen_native->surface,
|
||||||
kms_onscreen->next_bo);
|
onscreen_native->next_bo);
|
||||||
kms_onscreen->next_bo = NULL;
|
onscreen_native->next_bo = NULL;
|
||||||
kms_onscreen->next_fb_id = 0;
|
onscreen_native->next_fb_id = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -446,11 +448,11 @@ _cogl_winsys_onscreen_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
|||||||
* crtc modes, else we flip from the previous buffer */
|
* crtc modes, else we flip from the previous buffer */
|
||||||
if (renderer_native->pending_set_crtc)
|
if (renderer_native->pending_set_crtc)
|
||||||
{
|
{
|
||||||
setup_crtc_modes (context->display, kms_onscreen->next_fb_id);
|
setup_crtc_modes (context->display, onscreen_native->next_fb_id);
|
||||||
renderer_native->pending_set_crtc = FALSE;
|
renderer_native->pending_set_crtc = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
next_fb_id = kms_onscreen->next_fb_id;
|
next_fb_id = onscreen_native->next_fb_id;
|
||||||
|
|
||||||
/* Reference will either be released in flip_callback, or if the fb
|
/* Reference will either be released in flip_callback, or if the fb
|
||||||
* wasn't used, indicated by the return value below.
|
* wasn't used, indicated by the return value below.
|
||||||
@ -462,11 +464,11 @@ _cogl_winsys_onscreen_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
|||||||
|
|
||||||
if (!fb_in_use)
|
if (!fb_in_use)
|
||||||
{
|
{
|
||||||
drmModeRmFB (renderer_native->kms_fd, kms_onscreen->next_fb_id);
|
drmModeRmFB (renderer_native->kms_fd, onscreen_native->next_fb_id);
|
||||||
gbm_surface_release_buffer (kms_onscreen->surface,
|
gbm_surface_release_buffer (onscreen_native->surface,
|
||||||
kms_onscreen->next_bo);
|
onscreen_native->next_bo);
|
||||||
kms_onscreen->next_bo = NULL;
|
onscreen_native->next_bo = NULL;
|
||||||
kms_onscreen->next_fb_id = 0;
|
onscreen_native->next_fb_id = 0;
|
||||||
|
|
||||||
queue_swap_notify_for_onscreen (onscreen);
|
queue_swap_notify_for_onscreen (onscreen);
|
||||||
|
|
||||||
@ -503,7 +505,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
|
|||||||
CoglRendererEGL *egl_renderer = renderer->winsys;
|
CoglRendererEGL *egl_renderer = renderer->winsys;
|
||||||
MetaRendererNative *renderer_native = egl_renderer->platform;
|
MetaRendererNative *renderer_native = egl_renderer->platform;
|
||||||
CoglOnscreenEGL *egl_onscreen;
|
CoglOnscreenEGL *egl_onscreen;
|
||||||
CoglOnscreenKMS *kms_onscreen;
|
MetaOnscreenNative *onscreen_native;
|
||||||
|
|
||||||
_COGL_RETURN_VAL_IF_FAIL (egl_display->egl_context, FALSE);
|
_COGL_RETURN_VAL_IF_FAIL (egl_display->egl_context, FALSE);
|
||||||
|
|
||||||
@ -520,8 +522,8 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
|
|||||||
onscreen->winsys = g_slice_new0 (CoglOnscreenEGL);
|
onscreen->winsys = g_slice_new0 (CoglOnscreenEGL);
|
||||||
egl_onscreen = onscreen->winsys;
|
egl_onscreen = onscreen->winsys;
|
||||||
|
|
||||||
kms_onscreen = g_slice_new0 (CoglOnscreenKMS);
|
onscreen_native = g_slice_new0 (MetaOnscreenNative);
|
||||||
egl_onscreen->platform = kms_onscreen;
|
egl_onscreen->platform = onscreen_native;
|
||||||
|
|
||||||
/* If a kms_fd is set then the display width and height
|
/* If a kms_fd is set then the display width and height
|
||||||
* won't be available until meta_renderer_native_set_layout
|
* won't be available until meta_renderer_native_set_layout
|
||||||
@ -532,7 +534,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
|
|||||||
renderer_native->height == 0)
|
renderer_native->height == 0)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
kms_onscreen->surface =
|
onscreen_native->surface =
|
||||||
gbm_surface_create (renderer_native->gbm,
|
gbm_surface_create (renderer_native->gbm,
|
||||||
renderer_native->width,
|
renderer_native->width,
|
||||||
renderer_native->height,
|
renderer_native->height,
|
||||||
@ -540,7 +542,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
|
|||||||
GBM_BO_USE_SCANOUT |
|
GBM_BO_USE_SCANOUT |
|
||||||
GBM_BO_USE_RENDERING);
|
GBM_BO_USE_RENDERING);
|
||||||
|
|
||||||
if (!kms_onscreen->surface)
|
if (!onscreen_native->surface)
|
||||||
{
|
{
|
||||||
_cogl_set_error (error, COGL_WINSYS_ERROR,
|
_cogl_set_error (error, COGL_WINSYS_ERROR,
|
||||||
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
|
COGL_WINSYS_ERROR_CREATE_ONSCREEN,
|
||||||
@ -551,7 +553,7 @@ _cogl_winsys_onscreen_init (CoglOnscreen *onscreen,
|
|||||||
egl_onscreen->egl_surface =
|
egl_onscreen->egl_surface =
|
||||||
eglCreateWindowSurface (egl_renderer->edpy,
|
eglCreateWindowSurface (egl_renderer->edpy,
|
||||||
egl_display->egl_config,
|
egl_display->egl_config,
|
||||||
(EGLNativeWindowType) kms_onscreen->surface,
|
(EGLNativeWindowType) onscreen_native->surface,
|
||||||
NULL);
|
NULL);
|
||||||
if (egl_onscreen->egl_surface == EGL_NO_SURFACE)
|
if (egl_onscreen->egl_surface == EGL_NO_SURFACE)
|
||||||
{
|
{
|
||||||
@ -579,7 +581,7 @@ _cogl_winsys_onscreen_deinit (CoglOnscreen *onscreen)
|
|||||||
CoglRenderer *renderer = context->display->renderer;
|
CoglRenderer *renderer = context->display->renderer;
|
||||||
CoglRendererEGL *egl_renderer = renderer->winsys;
|
CoglRendererEGL *egl_renderer = renderer->winsys;
|
||||||
CoglOnscreenEGL *egl_onscreen = onscreen->winsys;
|
CoglOnscreenEGL *egl_onscreen = onscreen->winsys;
|
||||||
CoglOnscreenKMS *kms_onscreen;
|
MetaOnscreenNative *onscreen_native;
|
||||||
|
|
||||||
/* If we never successfully allocated then there's nothing to do */
|
/* If we never successfully allocated then there's nothing to do */
|
||||||
if (egl_onscreen == NULL)
|
if (egl_onscreen == NULL)
|
||||||
@ -587,11 +589,11 @@ _cogl_winsys_onscreen_deinit (CoglOnscreen *onscreen)
|
|||||||
|
|
||||||
renderer_native->onscreen = NULL;
|
renderer_native->onscreen = NULL;
|
||||||
|
|
||||||
kms_onscreen = egl_onscreen->platform;
|
onscreen_native = egl_onscreen->platform;
|
||||||
|
|
||||||
/* flip state takes a reference on the onscreen so there should
|
/* flip state takes a reference on the onscreen so there should
|
||||||
* never be outstanding flips when we reach here. */
|
* never be outstanding flips when we reach here. */
|
||||||
g_return_if_fail (kms_onscreen->next_fb_id == 0);
|
g_return_if_fail (onscreen_native->next_fb_id == 0);
|
||||||
|
|
||||||
free_current_bo (onscreen);
|
free_current_bo (onscreen);
|
||||||
|
|
||||||
@ -601,13 +603,13 @@ _cogl_winsys_onscreen_deinit (CoglOnscreen *onscreen)
|
|||||||
egl_onscreen->egl_surface = EGL_NO_SURFACE;
|
egl_onscreen->egl_surface = EGL_NO_SURFACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kms_onscreen->surface)
|
if (onscreen_native->surface)
|
||||||
{
|
{
|
||||||
gbm_surface_destroy (kms_onscreen->surface);
|
gbm_surface_destroy (onscreen_native->surface);
|
||||||
kms_onscreen->surface = NULL;
|
onscreen_native->surface = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_slice_free (CoglOnscreenKMS, kms_onscreen);
|
g_slice_free (MetaOnscreenNative, onscreen_native);
|
||||||
g_slice_free (CoglOnscreenEGL, onscreen->winsys);
|
g_slice_free (CoglOnscreenEGL, onscreen->winsys);
|
||||||
onscreen->winsys = NULL;
|
onscreen->winsys = NULL;
|
||||||
}
|
}
|
||||||
@ -657,7 +659,7 @@ meta_renderer_native_set_layout (MetaRendererNative *renderer_native,
|
|||||||
renderer_native->onscreen)
|
renderer_native->onscreen)
|
||||||
{
|
{
|
||||||
CoglOnscreenEGL *egl_onscreen = renderer_native->onscreen->winsys;
|
CoglOnscreenEGL *egl_onscreen = renderer_native->onscreen->winsys;
|
||||||
CoglOnscreenKMS *kms_onscreen = egl_onscreen->platform;
|
MetaOnscreenNative *onscreen_native = egl_onscreen->platform;
|
||||||
struct gbm_surface *new_surface;
|
struct gbm_surface *new_surface;
|
||||||
EGLSurface new_egl_surface;
|
EGLSurface new_egl_surface;
|
||||||
|
|
||||||
@ -691,25 +693,26 @@ meta_renderer_native_set_layout (MetaRendererNative *renderer_native,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kms_onscreen->pending_egl_surface)
|
if (onscreen_native->pending_egl_surface)
|
||||||
eglDestroySurface (egl_renderer->edpy, kms_onscreen->pending_egl_surface);
|
eglDestroySurface (egl_renderer->edpy,
|
||||||
if (kms_onscreen->pending_surface)
|
onscreen_native->pending_egl_surface);
|
||||||
gbm_surface_destroy (kms_onscreen->pending_surface);
|
if (onscreen_native->pending_surface)
|
||||||
|
gbm_surface_destroy (onscreen_native->pending_surface);
|
||||||
|
|
||||||
/* If there's already a surface, wait until the next swap to switch
|
/* If there's already a surface, wait until the next swap to switch
|
||||||
* it out, otherwise, if we're just starting up we can use the new
|
* it out, otherwise, if we're just starting up we can use the new
|
||||||
* surface right away.
|
* surface right away.
|
||||||
*/
|
*/
|
||||||
if (kms_onscreen->surface != NULL)
|
if (onscreen_native->surface != NULL)
|
||||||
{
|
{
|
||||||
kms_onscreen->pending_surface = new_surface;
|
onscreen_native->pending_surface = new_surface;
|
||||||
kms_onscreen->pending_egl_surface = new_egl_surface;
|
onscreen_native->pending_egl_surface = new_egl_surface;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (renderer_native->onscreen);
|
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (renderer_native->onscreen);
|
||||||
|
|
||||||
kms_onscreen->surface = new_surface;
|
onscreen_native->surface = new_surface;
|
||||||
egl_onscreen->egl_surface = new_egl_surface;
|
egl_onscreen->egl_surface = new_egl_surface;
|
||||||
|
|
||||||
_cogl_framebuffer_winsys_update_size (framebuffer, width, height);
|
_cogl_framebuffer_winsys_update_size (framebuffer, width, height);
|
||||||
|
Loading…
Reference in New Issue
Block a user