[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pingus-CVS] r3801 - trunk/pingus/src/display
From: |
grumbel at BerliOS |
Subject: |
[Pingus-CVS] r3801 - trunk/pingus/src/display |
Date: |
Sun, 13 Jul 2008 07:26:31 +0200 |
Author: grumbel
Date: 2008-07-13 07:26:29 +0200 (Sun, 13 Jul 2008)
New Revision: 3801
Modified:
trunk/pingus/src/display/delta_framebuffer.cpp
Log:
Improved scroll behaviour in delta-drawing mode
Modified: trunk/pingus/src/display/delta_framebuffer.cpp
===================================================================
--- trunk/pingus/src/display/delta_framebuffer.cpp 2008-07-12 17:31:49 UTC
(rev 3800)
+++ trunk/pingus/src/display/delta_framebuffer.cpp 2008-07-13 05:26:29 UTC
(rev 3801)
@@ -88,16 +88,27 @@
// Merge rectangles
- // Update all regions that need update
- for(std::vector<SDL_Rect>::iterator i = update_rects.begin(); i !=
update_rects.end(); ++i)
- {
- fb.push_cliprect(Rect(Vector2i(i->x, i->y), Size(i->w, i->h)));
+ if (update_rects.size() == 0)
+ { // No screen update needed
+ }
+ else if (update_rects.size() < 250) // FIXME: Random Magic Number, 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)
+ {
+ fb.push_cliprect(Rect(Vector2i(i->x, i->y), Size(i->w, i->h)));
+ for(DrawOps::iterator j = draw_obs.begin(); j != draw_obs.end();
++j)
+ j->render(fb);
+ fb.pop_cliprect();
+ }
+
+ fb.update_rects(update_rects);
+ }
+ else
+ { // Update the whole screen at once, since we have to many rects
for(DrawOps::iterator j = draw_obs.begin(); j != draw_obs.end(); ++j)
j->render(fb);
- fb.pop_cliprect();
+ fb.flip();
}
-
- fb.update_rects(update_rects);
}
void add(const SurfaceDrawOp& op) {
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r3801 - trunk/pingus/src/display,
grumbel at BerliOS <=