unsigned char *s;
int i, x, y;
+ output->cursor_surface = NULL;
if (es == NULL) {
drmModeSetCursor(c->drm.fd, output->crtc_id, 0, 0, 0);
return;
{
struct drm_compositor *c =
(struct drm_compositor *) output->compositor;
- struct drm_output *drm_output = (struct drm_output *) output;
struct weston_surface *es, *next;
pixman_region32_t overlap, surface_overlap;
struct weston_plane *primary, *next_plane;
* as we do for flipping full screen surfaces.
*/
pixman_region32_init(&overlap);
- drm_output->cursor_surface = NULL;
primary = &c->base.primary_plane;
wl_list_for_each_safe(es, next, &c->base.surface_list, link) {
pixman_region32_init(&surface_overlap);
}
}
- if (output->assign_planes)
- /*
- * This will queue flips for the fbs and sprites where
- * applicable and clear the damage for those surfaces.
- * The repaint loop below will repaint everything
- * else.
- */
+ if (output->assign_planes && !output->disable_planes)
output->assign_planes(output);
+ else
+ wl_list_for_each(es, &ec->surface_list, link)
+ weston_surface_move_to_plane(es, &ec->primary_plane);
+
pixman_region32_init(&opaque);
int dirty;
struct wl_signal frame_signal;
uint32_t frame_time;
+ int disable_planes;
char *make, *model;
uint32_t subpixel;
int32_t stride;
uint8_t *pixels, *d, *s;
+ output->disable_planes--;
wl_list_remove(&listener->link);
stride = l->buffer->width * 4;
pixels = malloc(stride * l->buffer->height);
l->listener.notify = screenshooter_frame_notify;
wl_signal_add(&output->frame_signal, &l->listener);
+ output->disable_planes++;
weston_output_schedule_repaint(output);
}
}
struct weston_recorder {
+ struct weston_output *output;
uint32_t *frame, *rect;
uint32_t total;
int fd;
recorder->rect = malloc(size);
recorder->total = 0;
recorder->count = 0;
+ recorder->output = output;
memset(recorder->frame, 0, size);
recorder->fd = open(filename,
recorder->frame_listener.notify = weston_recorder_frame_notify;
wl_signal_add(&output->frame_signal, &recorder->frame_listener);
+ output->disable_planes++;
weston_output_damage(output);
}
close(recorder->fd);
free(recorder->frame);
free(recorder->rect);
+ recorder->output->disable_planes--;
free(recorder);
}
output->zoom.level = 0.0;
else if (output->zoom.level > output->zoom.max_level)
output->zoom.level = output->zoom.max_level;
- else
+ else {
output->zoom.active = 1;
+ output->disable_planes++;
+ }
output->zoom.spring_z.target = output->zoom.level;
output->zoom.spring_z.current = 0.0;
if (weston_spring_done(&output->zoom.spring_z)) {
- if (output->zoom.level <= 0.0)
+ if (output->zoom.level <= 0.0) {
output->zoom.active = 0;
+ output->disable_planes--;
+ }
output->zoom.spring_z.current = output->zoom.level;
wl_list_remove(&animation->link);
wl_list_init(&animation->link);