_gdk_surface_clear_update_area (surface);
g_clear_object (&self->buffer);
+ g_clear_object (&self->front);
if (was_key)
{
g_clear_pointer (&self->monitors, g_ptr_array_unref);
+ g_clear_object (&self->buffer);
+ g_clear_object (&self->front);
+
g_assert (self->sorted.prev == NULL);
g_assert (self->sorted.next == NULL);
g_assert (self->frame.prev == NULL);
surface->height = content_rect.size.height;
g_clear_object (&self->buffer);
+ g_clear_object (&self->front);
_gdk_surface_update_size (surface);
gdk_surface_request_layout (surface);
/* We need to create a new IOSurface for this monitor */
g_clear_object (&self->buffer);
+ g_clear_object (&self->front);
_gdk_macos_surface_configure (self);
_gdk_macos_surface_swap_buffers (GdkMacosSurface *self,
const cairo_region_t *damage)
{
+ GdkMacosBuffer *swap;
+
g_return_if_fail (GDK_IS_MACOS_SURFACE (self));
g_return_if_fail (damage != NULL);
+ swap = self->buffer;
+ self->buffer = self->front;
+ self->front = swap;
+
/* This code looks like it swaps buffers, but since the IOSurfaceRef
* appears to be retained on the other side, we really just ask all
* of the GdkMacosTile CALayer's to update their contents.
*/
- [self->window swapBuffer:self->buffer withDamage:damage];
+ [self->window swapBuffer:swap withDamage:damage];
/* We might have delayed actually showing the window until the buffer
* contents are ready to be displayed. Doing so ensures that we don't