static void
_ds_surface_viewport_source_box_set(struct ds_surface *ds_surface, Eina_Rectangle *box)
{
- ds_surface->pending.viewport.has_src = true;
- ds_surface->pending.viewport.src.x = (double)box->x;
- ds_surface->pending.viewport.src.y = (double)box->y;
- ds_surface->pending.viewport.src.width = (double)box->w;
- ds_surface->pending.viewport.src.height = (double)box->h;
- ds_surface->current.viewport.has_src = true;
- ds_surface->current.viewport.src = ds_surface->pending.viewport.src;
+ if (box->x == -1 && box->y == -1 && box->w == -1 && box->h == -1)
+ {
+ ds_surface->pending.viewport.has_src = false;
+ ds_surface->current.viewport.has_src = false;
+ }
+ else
+ {
+ ds_surface->pending.viewport.has_src = true;
+ ds_surface->pending.viewport.src.x = (double)box->x;
+ ds_surface->pending.viewport.src.y = (double)box->y;
+ ds_surface->pending.viewport.src.width = (double)box->w;
+ ds_surface->pending.viewport.src.height = (double)box->h;
+ ds_surface->current.viewport.has_src = true;
+ ds_surface->current.viewport.src = ds_surface->pending.viewport.src;
+ }
}
static void
_ds_surface_viewport_destination_set(struct ds_surface *ds_surface, int32_t width, int32_t height)
{
- ds_surface->pending.viewport.has_dst = true;
- ds_surface->pending.viewport.dst_width = width;
- ds_surface->pending.viewport.dst_height = height;
- ds_surface->pending.width = width;
- ds_surface->pending.height = height;
- ds_surface->current.viewport.has_dst = true;
- ds_surface->current.viewport.dst_width = width;
- ds_surface->current.viewport.dst_height = height;
- ds_surface->current.width = width;
- ds_surface->current.height = height;
+ if (width == -1 && height == -1)
+ {
+ ds_surface->pending.viewport.has_src = false;
+ ds_surface->current.viewport.has_src = false;
+ }
+ else
+ {
+ ds_surface->pending.viewport.has_dst = true;
+ ds_surface->pending.viewport.dst_width = width;
+ ds_surface->pending.viewport.dst_height = height;
+ ds_surface->pending.width = width;
+ ds_surface->pending.height = height;
+ ds_surface->current.viewport.has_dst = true;
+ ds_surface->current.viewport.dst_width = width;
+ ds_surface->current.viewport.dst_height = height;
+ ds_surface->current.width = width;
+ ds_surface->current.height = height;
+ }
}
static void