|
From: <ka...@us...> - 2012-12-28 06:25:32
|
Revision: 7701
http://paintown.svn.sourceforge.net/paintown/?rev=7701&view=rev
Author: kazzmir
Date: 2012-12-28 06:25:20 +0000 (Fri, 28 Dec 2012)
Log Message:
-----------
avoid more calls to al_set_target_bitmap for a5
Modified Paths:
--------------
trunk/src/util/ftalleg.cpp
trunk/src/util/graphics/allegro5/bitmap.cpp
Modified: trunk/src/util/ftalleg.cpp
===================================================================
--- trunk/src/util/ftalleg.cpp 2012-12-28 04:11:41 UTC (rev 7700)
+++ trunk/src/util/ftalleg.cpp 2012-12-28 06:25:20 UTC (rev 7701)
@@ -171,20 +171,20 @@
* will occur.
*/
// al_set_target_bitmap(alive.getData().getBitmap());
- ALLEGRO_BITMAP * target = al_get_target_bitmap();
- al_set_target_bitmap(NULL);
+ // ALLEGRO_BITMAP * target = al_get_target_bitmap();
+ // al_set_target_bitmap(NULL);
int height = al_get_font_line_height(currentMemoryFont());
- al_set_target_bitmap(target);
+ // al_set_target_bitmap(target);
return height;
}
int freetype::getLength(const std::string & text) const {
Util::Thread::ScopedLock locked(lock);
// al_set_target_bitmap(alive.getData().getBitmap());
- ALLEGRO_BITMAP * target = al_get_target_bitmap();
- al_set_target_bitmap(NULL);
+ // ALLEGRO_BITMAP * target = al_get_target_bitmap();
+ // al_set_target_bitmap(NULL);
int width = al_get_text_width(currentMemoryFont(), text.c_str());
- al_set_target_bitmap(target);
+ // al_set_target_bitmap(target);
return width;
}
@@ -232,7 +232,9 @@
va_end(ap);
std::string fixedText(str.str());
- al_set_target_bitmap(bmp.getData()->getBitmap());
+ if (al_get_target_bitmap() != bmp.getData()->getBitmap()){
+ al_set_target_bitmap(bmp.getData()->getBitmap());
+ }
al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA);
/* for setting the blend state and whatnot */
Modified: trunk/src/util/graphics/allegro5/bitmap.cpp
===================================================================
--- trunk/src/util/graphics/allegro5/bitmap.cpp 2012-12-28 04:11:41 UTC (rev 7700)
+++ trunk/src/util/graphics/allegro5/bitmap.cpp 2012-12-28 06:25:20 UTC (rev 7701)
@@ -388,9 +388,13 @@
ALLEGRO_BITMAP * old_target = al_get_target_bitmap();
ALLEGRO_TRANSFORM transform;
al_identity_transform(&transform);
- al_set_target_bitmap(copy.getData()->getBitmap());
+ if (al_get_target_bitmap() != copy.getData()->getBitmap()){
+ al_set_target_bitmap(copy.getData()->getBitmap());
+ }
if (al_get_current_transform() != NULL){
- al_set_target_bitmap(copy.getData()->getBitmap());
+ if (old_target != copy.getData()->getBitmap()){
+ al_set_target_bitmap(copy.getData()->getBitmap());
+ }
al_copy_transform(&transform, al_get_current_transform());
}
@@ -1121,16 +1125,22 @@
scale_x = (double) parent.getWidth() / width;
scale_y = (double) parent.getHeight() / height;
ALLEGRO_BITMAP * old_target = al_get_target_bitmap();
- al_set_target_bitmap(parent.getData()->getBitmap());
+ if (al_get_target_bitmap() != parent.getData()->getBitmap()){
+ al_set_target_bitmap(parent.getData()->getBitmap());
+ }
ALLEGRO_TRANSFORM transform;
al_identity_transform(&transform);
if (al_get_current_transform() != NULL){
al_copy_transform(&transform, al_get_current_transform());
}
al_scale_transform(&transform, scale_x, scale_y);
- al_set_target_bitmap(getData()->getBitmap());
+ if (al_get_target_bitmap() != getData()->getBitmap()){
+ al_set_target_bitmap(getData()->getBitmap());
+ }
al_use_transform(&transform);
- al_set_target_bitmap(old_target);
+ if (old_target != al_get_target_bitmap()){
+ al_set_target_bitmap(old_target);
+ }
/* TODO: handle filter */
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|