From e949fcc0775887e9a0a8a89af3834403f0efb162 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 29 Aug 2014 15:28:17 -0400 Subject: [PATCH] only use pixmap size shortcut on non-internal clients this gets broken pretty easily since we resize all over the place --- src/bin/e_comp_x.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index a928e28ad..08461a982 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -200,11 +200,14 @@ _e_comp_x_client_new_helper(E_Client *ec) } ec->new_client ^= ec->override; - ec->comp_data->pw = ec->w = ec->client.w = ec->comp_data->initial_attributes.w; - ec->comp_data->ph = ec->h = ec->client.h = ec->comp_data->initial_attributes.h; + ec->w = ec->client.w = ec->comp_data->initial_attributes.w; + ec->h = ec->client.h = ec->comp_data->initial_attributes.h; + if (!ec->internal) + { + ec->comp_data->pw = ec->w; + ec->comp_data->ph = ec->h; + } ec->changes.size = 1; - if (ec->override) - ec->comp_data->pw = ec->w, ec->comp_data->ph = ec->h; e_pixmap_visual_cmap_set(ec->pixmap, ec->comp_data->initial_attributes.visual, ec->comp_data->initial_attributes.colormap); @@ -574,8 +577,11 @@ _e_comp_x_post_client_idler_cb(void *d EINA_UNUSED) if (ec->post_resize) e_pixmap_dirty(ec->pixmap); e_comp_object_render_update_del(ec->frame); - ec->comp_data->pw = ec->client.w; - ec->comp_data->ph = ec->client.h; + if (!ec->internal) + { + ec->comp_data->pw = ec->client.w; + ec->comp_data->ph = ec->client.h; + } ec->post_move = 0; ec->post_resize = 0; } @@ -1388,12 +1394,13 @@ _e_comp_x_configure(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_ } move = (ec->client.x != ev->x) || (ec->client.y != ev->y); resize = (ec->client.w != ev->w) || (ec->client.h != ev->h); + if (!ec->internal) + ec->comp_data->pw = ev->w, ec->comp_data->ph = ev->h; EINA_RECTANGLE_SET(&ec->client, ev->x, ev->y, ev->w, ev->h); if (move) evas_object_move(ec->frame, ev->x, ev->y); if (resize) { - ec->comp_data->pw = ev->w, ec->comp_data->ph = ev->h; e_pixmap_dirty(ec->pixmap); evas_object_resize(ec->frame, ev->w, ev->h); }