[Spice-devel] [PATCH xf86-video-qxl 1/2] Add helper functions for updating the boxes and regions; makes the code a bit cleaner.

Jeremy White jwhite at codeweavers.com
Fri Sep 19 08:44:11 PDT 2014


Signed-off-by: Jeremy White <jwhite at codeweavers.com>
---
 src/dfps.c |   58 +++++++++++++++++++++++++++-------------------------------
 1 file changed, 27 insertions(+), 31 deletions(-)

diff --git a/src/dfps.c b/src/dfps.c
index 4ab20a8..a57523b 100644
--- a/src/dfps.c
+++ b/src/dfps.c
@@ -128,6 +128,28 @@ static Bool unaccel (void)
     return FALSE;
 }
 
+static void dfps_update_region(RegionPtr dest, RegionPtr src)
+{
+    Bool throwaway_bool;
+
+    RegionAppend(dest, src);
+    RegionValidate(dest, &throwaway_bool);
+}
+
+static void dfps_update_box(RegionPtr dest, int x_1, int x_2, int y_1, int y_2)
+{
+    struct pixman_box16 box;
+    RegionPtr region;
+
+    box.x1 = x_1; box.x2 = x_2; box.y1 = y_1; box.y2 = y_2;
+    region = RegionCreate(&box, 1);
+
+    dfps_update_region(dest, region);
+
+    RegionUninit(region);
+    RegionDestroy(region);
+}
+
 static Bool dfps_prepare_solid (PixmapPtr pixmap, int alu, Pixel planemask, Pixel fg)
 {
     dfps_info_t *info;
@@ -152,9 +174,6 @@ static Bool dfps_prepare_solid (PixmapPtr pixmap, int alu, Pixel planemask, Pixe
 
 static void dfps_solid (PixmapPtr pixmap, int x_1, int y_1, int x_2, int y_2)
 {
-    struct pixman_box16 box;
-    RegionPtr region;
-    Bool throwaway_bool;
     dfps_info_t *info;
 
     if (!(info = dfps_get_info (pixmap)))
@@ -164,12 +183,7 @@ static void dfps_solid (PixmapPtr pixmap, int x_1, int y_1, int x_2, int y_2)
     fbFill(&pixmap->drawable, info->pgc, x_1, y_1, x_2 - x_1, y_2 - y_1);
 
     /* Track the updated region */
-    box.x1 = x_1; box.x2 = x_2; box.y1 = y_1; box.y2 = y_2;
-    region = RegionCreate(&box, 1);
-    RegionAppend(&info->updated_region, region);
-    RegionValidate(&info->updated_region, &throwaway_bool);
-    RegionUninit(region);
-    RegionDestroy(region);
+    dfps_update_box(&info->updated_region, x_1, x_2, y_1, y_2);
     return;
 }
 
@@ -212,10 +226,6 @@ static void dfps_copy (PixmapPtr dest,
           int dest_x1, int dest_y1,
           int width, int height)
 {
-    struct pixman_box16 box;
-    RegionPtr region;
-    Bool throwaway_bool;
-
     dfps_info_t *info;
 
     if (!(info = dfps_get_info (dest)))
@@ -225,12 +235,7 @@ static void dfps_copy (PixmapPtr dest,
     fbCopyArea(&info->copy_src->drawable, &dest->drawable, info->pgc, src_x1, src_y1, width, height, dest_x1, dest_y1);
 
     /* Update the tracking region */
-    box.x1 = dest_x1; box.x2 = dest_x1 + width; box.y1 = dest_y1; box.y2 = dest_y1 + height;
-    region = RegionCreate(&box, 1);
-    RegionAppend(&info->updated_region, region);
-    RegionValidate(&info->updated_region, &throwaway_bool);
-    RegionUninit(region);
-    RegionDestroy(region);
+    dfps_update_box(&info->updated_region, dest_x1, dest_x1 + width, dest_y1, dest_y1 + height);
 }
 
 static void dfps_done_copy (PixmapPtr dest)
@@ -247,20 +252,12 @@ static void dfps_done_copy (PixmapPtr dest)
 static Bool dfps_put_image (PixmapPtr dest, int x, int y, int w, int h,
                char *src, int src_pitch)
 {
-    struct pixman_box16 box;
-    RegionPtr region;
-    Bool throwaway_bool;
     dfps_info_t *info;
 
     if (!(info = dfps_get_info (dest)))
         return FALSE;
 
-    box.x1 = x; box.x2 = x + w; box.y1 = y; box.y2 = y + h;
-    region = RegionCreate(&box, 1);
-    RegionAppend(&info->updated_region, region);
-    RegionValidate(&info->updated_region, &throwaway_bool);
-    RegionUninit(region);
-    RegionDestroy(region);
+    dfps_update_box(&info->updated_region, x, x + w, y, y + h);
 
     /* We can avoid doing the put image ourselves, as the uxa driver
        will fall back and do it for us if we return false */
@@ -274,12 +271,11 @@ static Bool dfps_prepare_access (PixmapPtr pixmap, RegionPtr region, uxa_access_
     if (requested_access == UXA_ACCESS_RW)
     {
         dfps_info_t *info;
-        Bool throwaway_bool;
 
         if (!(info = dfps_get_info (pixmap)))
             return FALSE;
-        RegionAppend(&info->updated_region, region);
-        RegionValidate(&info->updated_region, &throwaway_bool);
+
+        dfps_update_region(&info->updated_region, region);
     }
     return TRUE;
 }
-- 
1.7.10.4



More information about the Spice-devel mailing list