fix e_pixmap for compositor structure change.

remove memcpy of wl_buffer data.

NB: This Is REALLY not needed in ANY compositor !!!
NB: This DOES cause lots of current Failures within the existing X Compositor ... ie: Wayland Clients inside X do NOT work at this point :(

Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
Chris Michael 2014-07-21 09:15:44 -04:00
parent a6ed5677b2
commit 1b7103323d
1 changed files with 13 additions and 2 deletions

View File

@ -383,8 +383,8 @@ e_pixmap_refresh(E_Pixmap *cp)
if (cp->client->comp_data &&
cp->client->comp_data->pw && cp->client->comp_data->ph)
{
pw = cp->client->comp_data->pw;
ph = cp->client->comp_data->ph;
pw = cp->client->x_comp_data->pw;
ph = cp->client->x_comp_data->ph;
}
else
ecore_x_pixmap_geometry_get(pixmap, NULL, NULL, &pw, &ph);
@ -409,6 +409,9 @@ e_pixmap_refresh(E_Pixmap *cp)
break;
case E_PIXMAP_TYPE_WL:
#if defined(HAVE_WAYLAND_CLIENTS) || defined(HAVE_WAYLAND_ONLY)
DBG("PIXMAP REFRESH");
if (cp->parent) DBG("\tHas Parent");
else DBG("\tNo Parent");
_e_pixmap_update_wl(cp);
success = ((cp->w > 0) && (cp->h > 0));
#endif
@ -599,7 +602,9 @@ e_pixmap_image_clear(E_Pixmap *cp, Eina_Bool cache)
#endif
break;
case E_PIXMAP_TYPE_WL:
DBG("PIXMAP IMAGE CLEAR: %d", cache);
/* NB: Nothing to do here. No-Op */
/* NB: Old code would memcpy here */
break;
default:
break;
@ -632,6 +637,7 @@ e_pixmap_image_refresh(E_Pixmap *cp)
break;
case E_PIXMAP_TYPE_WL:
#if defined(HAVE_WAYLAND_CLIENTS) || defined(HAVE_WAYLAND_ONLY)
DBG("PIXMAP IMAGE REFRESH");
_e_pixmap_update_wl(cp);
return ((cp->w > 0) && (cp->h > 0));
#endif
@ -692,15 +698,20 @@ e_pixmap_image_data_get(E_Pixmap *cp)
break;
case E_PIXMAP_TYPE_WL:
#if defined(HAVE_WAYLAND_CLIENTS) || defined(HAVE_WAYLAND_ONLY)
DBG("PIXMAP IMAGE DATA GET");
if (cp->resource)
{
struct wl_shm_buffer *buffer;
void *data = NULL;
/* size_t size; */
if (!(buffer = wl_shm_buffer_get(cp->resource)))
return NULL;
/* size = (cp->w * cp->h * sizeof(int)); */
/* data = malloc(size); */
wl_shm_buffer_begin_access(buffer);
/* memcpy(data, wl_shm_buffer_get_data(buffer), size); */
data = wl_shm_buffer_get_data(buffer);
wl_shm_buffer_end_access(buffer);