pingus-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pingus-CVS] r3817 - trunk/pingus/src/display


From: grumbel at BerliOS
Subject: [Pingus-CVS] r3817 - trunk/pingus/src/display
Date: Sun, 13 Jul 2008 15:32:12 +0200

Author: grumbel
Date: 2008-07-13 15:32:12 +0200 (Sun, 13 Jul 2008)
New Revision: 3817

Modified:
   trunk/pingus/src/display/delta_framebuffer.cpp
Log:
Decide between delta and fullscreen refreshes based on screensize, not 
rectangle count

Modified: trunk/pingus/src/display/delta_framebuffer.cpp
===================================================================
--- trunk/pingus/src/display/delta_framebuffer.cpp      2008-07-13 13:31:44 UTC 
(rev 3816)
+++ trunk/pingus/src/display/delta_framebuffer.cpp      2008-07-13 13:32:12 UTC 
(rev 3817)
@@ -45,6 +45,16 @@
       rects_out.push_back(*i);
     }
 }
+
+int calculate_region(const std::vector<SDL_Rect>& rects)
+{
+  int area = 0;
+  for(std::vector<SDL_Rect>::const_iterator i = rects.begin(); i != 
rects.end(); ++i)
+    {
+      area += i->w * i->h;
+    }
+  return area;
+}
 
 class DrawOpBuffer
 {
@@ -98,10 +108,12 @@
     std::vector<SDL_Rect> update_rects;
     merge_rectangles(changed_regions, update_rects);
 
-    if (update_rects.size() == 0)
+    int area = calculate_region(update_rects);
+
+    if (area == 0)
       { // No screen update needed
       }
-    else if (update_rects.size() < 250) // FIXME: Random Magic Number, need 
benchmarking to find proper value
+    else if (area < fb.get_size().get_area()*75/100) // FIXME: Random Magic 
ratio, need benchmarking to find proper value
       { // Update all regions that need update
         for(std::vector<SDL_Rect>::iterator i = update_rects.begin(); i != 
update_rects.end(); ++i)
           {





reply via email to

[Prev in Thread] Current Thread [Next in Thread]