window: Remove the concept of surface_mapped

The implementation was just wrong. We now consider it an error to attach
a NULL buffer to an xdg_surface. Users should destroy the surface properly.
This commit is contained in:
Jasper St. Pierre 2014-07-14 14:49:18 -04:00
parent 941d202938
commit 7159d3bc35
4 changed files with 10 additions and 27 deletions

View File

@ -347,10 +347,6 @@ struct _MetaWindow
/* whether or not the window is from a program running on another machine */
guint is_remote : 1;
/* Used for Wayland -- surfaces can behave as if they were unmapped if
* they have a NULL buffer attached... */
guint surface_mapped;
/* if non-NULL, the bounds of the window frame */
cairo_region_t *frame_bounds;
@ -672,9 +668,6 @@ void meta_window_handle_leave (MetaWindow *window);
gboolean meta_window_handle_ungrabbed_event (MetaWindow *window,
const ClutterEvent *event);
void meta_window_set_surface_mapped (MetaWindow *window,
gboolean surface_mapped);
void meta_window_get_client_area_rect (const MetaWindow *window,
cairo_rectangle_int_t *rect);
void meta_window_get_titlebar_rect (MetaWindow *window,

View File

@ -785,7 +785,6 @@ _meta_window_shared_new (MetaDisplay *display,
window->client_type = client_type;
window->surface = surface;
window->xwindow = xwindow;
window->surface_mapped = FALSE;
/* this is in window->screen->display, but that's too annoying to
* type
@ -1568,9 +1567,6 @@ meta_window_should_be_showing (MetaWindow *window)
{
gboolean on_workspace;
if (!window->surface_mapped)
return FALSE;
meta_verbose ("Should be showing for window %s\n", window->desc);
/* See if we're on the workspace */
@ -7998,17 +7994,6 @@ meta_window_handle_ungrabbed_event (MetaWindow *window,
return TRUE;
}
void
meta_window_set_surface_mapped (MetaWindow *window,
gboolean surface_mapped)
{
if (window->surface_mapped == (guint) surface_mapped)
return;
window->surface_mapped = surface_mapped;
meta_window_queue (window, META_QUEUE_CALC_SHOWING);
}
void
meta_window_set_custom_frame_extents (MetaWindow *window,
GtkBorder *extents)

View File

@ -163,7 +163,7 @@ cursor_surface_commit (MetaWaylandSurface *surface,
}
static void
toplevel_surface_commit (MetaWaylandSurface *surface,
toplevel_surface_commit (MetaWaylandSurface *surface,
MetaWaylandPendingState *pending)
{
if (pending->frame_extents_changed)
@ -174,9 +174,16 @@ toplevel_surface_commit (MetaWaylandSurface *surface,
MetaWindow *window = surface->window;
MetaWaylandBuffer *buffer = pending->buffer;
meta_window_set_surface_mapped (window, buffer != NULL);
if (buffer == NULL)
{
wl_resource_post_error (surface->resource,
WL_DISPLAY_ERROR_INVALID_OBJECT,
"Cannot commit a NULL buffer to an xdg_surface");
return;
}
/* We resize X based surfaces according to X events */
if (buffer != NULL && window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND)
if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND)
{
int new_width, new_height;

View File

@ -2985,8 +2985,6 @@ meta_window_x11_new (MetaDisplay *display,
meta_display_grab_focus_window_button (window->display, window);
}
meta_window_set_surface_mapped (window, TRUE);
meta_error_trap_pop (display); /* pop the XSync()-reducing trap */
return window;