summaryrefslogtreecommitdiff
path: root/xwayland/window-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'xwayland/window-manager.c')
-rw-r--r--xwayland/window-manager.c88
1 files changed, 2 insertions, 86 deletions
diff --git a/xwayland/window-manager.c b/xwayland/window-manager.c
index 62087941..06370b70 100644
--- a/xwayland/window-manager.c
+++ b/xwayland/window-manager.c
@@ -138,8 +138,6 @@ struct weston_wm_window {
xcb_window_t frame_id;
struct frame *frame;
cairo_surface_t *cairo_surface;
- int icon;
- cairo_surface_t *icon_surface; /* A temporary slot, to be passed to frame on creation */
uint32_t surface_id;
struct weston_surface *surface;
struct weston_desktop_xwayland_surface *shsurf;
@@ -475,7 +473,6 @@ weston_wm_window_read_properties(struct weston_wm_window *window)
{ wm->atom.net_wm_state, TYPE_NET_WM_STATE, NULL },
{ wm->atom.net_wm_window_type, XCB_ATOM_ATOM, F(type) },
{ wm->atom.net_wm_name, XCB_ATOM_STRING, F(name) },
- { wm->atom.net_wm_icon, XCB_ATOM_CARDINAL, F(icon) },
{ wm->atom.net_wm_pid, XCB_ATOM_CARDINAL, F(pid) },
{ wm->atom.motif_wm_hints, TYPE_MOTIF_WM_HINTS, NULL },
{ wm->atom.wm_client_machine, XCB_ATOM_WM_CLIENT_MACHINE, F(machine) },
@@ -976,10 +973,8 @@ weston_wm_window_create_frame(struct weston_wm_window *window)
buttons |= FRAME_BUTTON_MAXIMIZE;
window->frame = frame_create(window->wm->theme,
- window->width, window->height,
- buttons, window->name,
- window->icon_surface);
- window->icon_surface = NULL;
+ window->width, window->height,
+ buttons, window->name, NULL);
frame_resize_inside(window->frame, window->width, window->height);
weston_wm_window_get_frame_size(window, &width, &height);
@@ -1319,70 +1314,6 @@ weston_wm_window_schedule_repaint(struct weston_wm_window *window)
}
static void
-handle_icon_surface_destroy(void *data)
-{
- free(data);
-}
-
-static void
-weston_wm_handle_icon(struct weston_wm *wm, struct weston_wm_window *window)
-{
- xcb_get_property_reply_t *reply;
- xcb_get_property_cookie_t cookie;
- uint32_t length;
- uint32_t *data, width, height;
- cairo_surface_t *new_surface;
-
- /* TODO: icons don’t have any specified order, we should pick the
- * closest one to the target dimension instead of the first one. */
-
- cookie = xcb_get_property(wm->conn, 0, window->id,
- wm->atom.net_wm_icon, XCB_ATOM_ANY, 0,
- UINT32_MAX);
- reply = xcb_get_property_reply(wm->conn, cookie, NULL);
- length = xcb_get_property_value_length(reply);
-
- /* This is in 32-bit words, not in bytes. */
- if (length < 2) {
- free(reply);
- return;
- }
-
- data = xcb_get_property_value(reply);
- width = *data++;
- height = *data++;
-
- /* Some checks against malformed input. */
- if (width == 0 || height == 0 || length < 2 + width * height) {
- free(reply);
- return;
- }
-
- new_surface =
- cairo_image_surface_create_for_data((unsigned char *)data,
- CAIRO_FORMAT_ARGB32,
- width, height, width * 4);
-
- /* Bail out in case anything wrong happened during surface creation. */
- if (cairo_surface_status(new_surface) != CAIRO_STATUS_SUCCESS) {
- cairo_surface_destroy(new_surface);
- free(reply);
- return;
- }
-
- if (window->icon_surface)
- cairo_surface_destroy(window->icon_surface);
-
- cairo_surface_set_user_data(new_surface, NULL, reply,
- &handle_icon_surface_destroy);
-
- if (window->frame)
- frame_set_icon(window->frame, new_surface);
- else /* We don’t have a frame yet */
- window->icon_surface = new_surface;
-}
-
-static void
weston_wm_handle_property_notify(struct weston_wm *wm, xcb_generic_event_t *event)
{
xcb_property_notify_event_t *property_notify =
@@ -1402,19 +1333,6 @@ weston_wm_handle_property_notify(struct weston_wm *wm, xcb_generic_event_t *even
read_and_dump_property(wm, property_notify->window,
property_notify->atom);
- if (property_notify->atom == wm->atom.net_wm_icon) {
- if (property_notify->state != XCB_PROPERTY_DELETE) {
- weston_wm_handle_icon(wm, window);
- } else {
- if (window->frame)
- frame_set_icon(window->frame, NULL);
- if (window->icon_surface)
- cairo_surface_destroy(window->icon_surface);
- window->icon_surface = NULL;
- }
- weston_wm_window_schedule_repaint(window);
- }
-
if (property_notify->atom == wm->atom.net_wm_name ||
property_notify->atom == XCB_ATOM_WM_NAME)
weston_wm_window_schedule_repaint(window);
@@ -1475,8 +1393,6 @@ weston_wm_window_destroy(struct weston_wm_window *window)
wl_event_source_remove(window->repaint_source);
if (window->cairo_surface)
cairo_surface_destroy(window->cairo_surface);
- if (window->icon_surface)
- cairo_surface_destroy(window->icon_surface);
if (window->frame_id) {
xcb_reparent_window(wm->conn, window->id, wm->wm_window, 0, 0);