compositor: Scanout client buffers even if they're not map_fullscreen
authorKristian Høgsberg <krh@bitplanet.net>
Fri, 6 May 2011 18:03:12 +0000 (14:03 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Fri, 6 May 2011 18:03:12 +0000 (14:03 -0400)
compositor/compositor-drm.c
compositor/compositor.c

index 2902168..eb452ab 100644 (file)
@@ -144,7 +144,9 @@ drm_output_prepare_scanout_surface(struct wlsc_output *output_base,
        int ret;
        uint32_t fb_id = 0;
 
-       if (es->width != output->base.width ||
+       if (es->x != output->base.x ||
+           es->y != output->base.y ||
+           es->width != output->base.width ||
            es->height != output->base.height ||
            es->image == EGL_NO_IMAGE_KHR)
                return -1;
index 15dc600..22bb9a8 100644 (file)
@@ -703,19 +703,19 @@ wlsc_output_repaint(struct wlsc_output *output)
                using_hardware_cursor = 0;
 
        es = container_of(ec->surface_list.next, struct wlsc_surface, link);
-       if (es->fullscreen_output == output) {
-               if (es->visual == &ec->compositor.rgb_visual &&
-                   using_hardware_cursor) {
-                       if (output->prepare_scanout_surface(output, es) == 0) {
-                               /* We're drawing nothing now,
-                                * draw the damaged regions later. */
-                               pixman_region32_union(&ec->damage_region,
-                                                     &ec->damage_region,
-                                                     &total_damage);
-                               return;
-                       }
+
+       if (es->visual == &ec->compositor.rgb_visual && using_hardware_cursor) {
+               if (output->prepare_scanout_surface(output, es) == 0) {
+                       /* We're drawing nothing now,
+                        * draw the damaged regions later. */
+                       pixman_region32_union(&ec->damage_region,
+                                             &ec->damage_region,
+                                             &total_damage);
+                       return;
                }
+       }
 
+       if (es->fullscreen_output == output) {
                if (es->width < output->width ||
                    es->height < output->height)
                        glClear(GL_COLOR_BUFFER_BIT);