[Top][All Lists]
[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)
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r3817 - trunk/pingus/src/display,
grumbel at BerliOS <=