forked from enlightenment/efl
swapper infra work - handle if buffer sizes dont match... :)
SVN revision: 83764
This commit is contained in:
parent
afd8a714f4
commit
5a80685803
|
@ -226,7 +226,8 @@ evas_software_xlib_swapbuf_new_region_for_update(Outbuf *buf, int x, int y, int
|
||||||
im = buf->priv.onebuf;
|
im = buf->priv.onebuf;
|
||||||
if (!im)
|
if (!im)
|
||||||
{
|
{
|
||||||
data = evas_xlib_swapper_buffer_map(buf->priv.swapper, &bpl);
|
data = evas_xlib_swapper_buffer_map(buf->priv.swapper, &bpl,
|
||||||
|
&(buf->w), &(buf->h));
|
||||||
#ifdef EVAS_CSERVE2
|
#ifdef EVAS_CSERVE2
|
||||||
if (evas_cserve2_use_get())
|
if (evas_cserve2_use_get())
|
||||||
im = (RGBA_Image *)evas_cache2_image_data(evas_common_image_cache2_get(),
|
im = (RGBA_Image *)evas_cache2_image_data(evas_common_image_cache2_get(),
|
||||||
|
@ -482,8 +483,11 @@ evas_software_xlib_swapbuf_push_updated_region(Outbuf *buf, RGBA_Image *update,
|
||||||
}
|
}
|
||||||
src_data = update->image.data;
|
src_data = update->image.data;
|
||||||
if (!src_data) return;
|
if (!src_data) return;
|
||||||
dst_data = evas_xlib_swapper_buffer_map(buf->priv.swapper, &bpl);
|
dst_data = evas_xlib_swapper_buffer_map(buf->priv.swapper, &bpl,
|
||||||
|
&(buf->w), &(buf->h));
|
||||||
if (!dst_data) return;
|
if (!dst_data) return;
|
||||||
|
RECTS_CLIP_TO_RECT(r.x, r.y, r.w, r.h, 0, 0, buf->w, buf->h);
|
||||||
|
if ((r.w <= 0) || (r.h <= 0)) return;
|
||||||
bpp = d / 8;
|
bpp = d / 8;
|
||||||
if (bpp <= 0) return;
|
if (bpp <= 0) return;
|
||||||
wid = bpl / bpp;
|
wid = bpl / bpp;
|
||||||
|
|
|
@ -227,10 +227,12 @@ evas_xlib_swapper_free(X_Swapper *swp)
|
||||||
}
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
evas_xlib_swapper_buffer_map(X_Swapper *swp, int *bpl)
|
evas_xlib_swapper_buffer_map(X_Swapper *swp, int *bpl, int *w, int *h)
|
||||||
{
|
{
|
||||||
swp->mapped = EINA_TRUE;
|
swp->mapped = EINA_TRUE;
|
||||||
if (bpl) *bpl = swp->buf[swp->buf_cur].bpl;
|
if (bpl) *bpl = swp->buf[swp->buf_cur].bpl;
|
||||||
|
if (w) *w = swp->w;
|
||||||
|
if (h) *h = swp->h;
|
||||||
return swp->buf[swp->buf_cur].data;
|
return swp->buf[swp->buf_cur].data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -676,7 +678,7 @@ evas_xlib_swapper_free(X_Swapper *swp)
|
||||||
}
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
evas_xlib_swapper_buffer_map(X_Swapper *swp, int *bpl)
|
evas_xlib_swapper_buffer_map(X_Swapper *swp, int *bpl, int *w, int *h)
|
||||||
{
|
{
|
||||||
unsigned int attach = DRI2BufferBackLeft;
|
unsigned int attach = DRI2BufferBackLeft;
|
||||||
int num;
|
int num;
|
||||||
|
@ -766,6 +768,8 @@ evas_xlib_swapper_buffer_map(X_Swapper *swp, int *bpl)
|
||||||
}
|
}
|
||||||
swp->w = swp->buf_w;
|
swp->w = swp->buf_w;
|
||||||
swp->h = swp->buf_h;
|
swp->h = swp->buf_h;
|
||||||
|
if (w) *w = swp->w;
|
||||||
|
if (h) *h = swp->h;
|
||||||
return swp->buf_data;
|
return swp->buf_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -806,7 +810,7 @@ evas_xlib_swapper_buffer_state_get(X_Swapper *swp)
|
||||||
{
|
{
|
||||||
DRI2BufferFlags *flags;
|
DRI2BufferFlags *flags;
|
||||||
|
|
||||||
if (!swp->mapped) evas_xlib_swapper_buffer_map(swp, NULL);
|
if (!swp->mapped) evas_xlib_swapper_buffer_map(swp, NULL, NULL, NULL);
|
||||||
if (!swp->mapped) return MODE_FULL;
|
if (!swp->mapped) return MODE_FULL;
|
||||||
flags = (DRI2BufferFlags *)(&(swp->buf->flags));
|
flags = (DRI2BufferFlags *)(&(swp->buf->flags));
|
||||||
if (flags->data.idx_reuse != swp->last_count)
|
if (flags->data.idx_reuse != swp->last_count)
|
||||||
|
@ -906,7 +910,7 @@ evas_xlib_swapper_free(X_Swapper *swp EINA_UNUSED)
|
||||||
}
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
evas_xlib_swapper_buffer_map(X_Swapper *swp EINA_UNUSED, int *bpl EINA_UNUSED)
|
evas_xlib_swapper_buffer_map(X_Swapper *swp EINA_UNUSED, int *bpl EINA_UNUSED, int *w EINA_UNUSED, int *h EINA_UNUSED)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ typedef struct _X_Swapper X_Swapper;
|
||||||
X_Swapper *evas_xlib_swapper_new(Display *disp, Drawable draw, Visual *vis,
|
X_Swapper *evas_xlib_swapper_new(Display *disp, Drawable draw, Visual *vis,
|
||||||
int depth, int w, int h);
|
int depth, int w, int h);
|
||||||
void evas_xlib_swapper_free(X_Swapper *swp);
|
void evas_xlib_swapper_free(X_Swapper *swp);
|
||||||
void *evas_xlib_swapper_buffer_map(X_Swapper *swp, int *bpl);
|
void *evas_xlib_swapper_buffer_map(X_Swapper *swp, int *bpl, int *w, int *h);
|
||||||
void evas_xlib_swapper_buffer_unmap(X_Swapper *swp);
|
void evas_xlib_swapper_buffer_unmap(X_Swapper *swp);
|
||||||
void evas_xlib_swapper_swap(X_Swapper *swp, Eina_Rectangle *rects, int nrects);
|
void evas_xlib_swapper_swap(X_Swapper *swp, Eina_Rectangle *rects, int nrects);
|
||||||
int evas_xlib_swapper_buffer_state_get(X_Swapper *swp);
|
int evas_xlib_swapper_buffer_state_get(X_Swapper *swp);
|
||||||
|
|
Loading…
Reference in New Issue