<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Possible bug with text outputs</title>
		<link>http://www.allegro.cc/forums/view/599845</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 25 Apr 2009 18:26:11 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello.</p><p>I&#39;m developing my game with Allegro 4.9.8.<br />While programming, I realized that sometimes my program uses too much CPU processing.<br />Then, trying to find where it was the cause, I discovered that al_font_textout() was the answer. I made a test program to prove this, and I was right:</p><p>- I load a ttf font<br />- Use a color<br />- In a loop (with sleep()!) I use that function</p><p>When I remove the line of al_font_textout(), my CPU proccessment goes 2~ in max. With al_font_textout(), it reachs 30~35.</p><p>I attached my program files so you can test it too.</p><p>Does this only happens with me?<br />If not, isnt it a bug?<br />Is it a know bug that was solved on 4.9.9?</p><p>Thank you <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lucas Adami)</author>
		<pubDate>Mon, 06 Apr 2009 04:53:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I haven&#39;t tested the executable but I looked at the code. What I noticed was that you don&#39;t use a proper timing method. </p><p>You should have a look at this awesome <a href="http://software.skoobalon.com/docs/a5_tut02.php">allegro 5 tutorials</a> and especially tutorial 3 which will explain how to use proper timing with allegro 5.</p><p>Maybe this will already solve your problem because the redrawing of your screen will only been done when necessary (so it will use less cpu).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Mon, 06 Apr 2009 21:39:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Christopher, I dont use the sleep as it is on the test code on my project <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>But, it has nothing to do with the CPU usage. If I change the text output to a bmp drawing ( I tested with a bmp of 1MB! -&gt; al_draw_bitmap() ), the CPU usage does not pass 3~.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lucas Adami)</author>
		<pubDate>Tue, 07 Apr 2009 01:41:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Text output seems slow to me, too, but I hadn&#39;t done any testing to verify it. In <a href="http://www.allegro.cc/depot/Word5/">one of my games</a> the CPU usage jumps up when I display around 5 lines of text on the screen. My game is using bitmap fonts.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Todd Cope)</author>
		<pubDate>Tue, 07 Apr 2009 02:00:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think there is some inefficiency there, but it would be nice if you guys tested with 4.9.9 or later, and preferably with the profiling builds. I didn&#39;t notice anything <i>particularly</i> wrong with Lucas&#39; example on my machine (OpenGL on Linux).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Tue, 07 Apr 2009 06:22:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Most functions you used in that example don&#39;t exist in SVN version.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Milan Mimica)</author>
		<pubDate>Tue, 07 Apr 2009 20:35:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599845/804586#target">Christopher Bludau</a> said:</div><div class="quote"><p>You should have a look at this awesome allegro 5 tutorials</p></div></div><p>
Looking at the code I see this:
</p><div class="source-code snippet"><div class="inner"><pre>ALLEGRO_TIMER <span class="k3">*</span>timer <span class="k3">=</span> al_install_timer<span class="k2">(</span><span class="n">1</span>.<span class="n">0</span><span class="k3">/</span>refresh_rate<span class="k2">)</span><span class="k2">;</span>
  al_start_timer<span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
  ALLEGRO_EVENT_QUEUE <span class="k3">*</span>queue <span class="k3">=</span> al_create_event_queue<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
  al_register_event_source<span class="k2">(</span>queue, <span class="k2">(</span>ALLEGRO_EVENT_SOURCE<span class="k3">*</span><span class="k2">)</span>al_get_keyboard<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
  al_register_event_source<span class="k2">(</span>queue, <span class="k2">(</span>ALLEGRO_EVENT_SOURCE<span class="k3">*</span><span class="k2">)</span>timer<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

Assuming this is the typical usage for timers, would it not be good to add an optional parameter to al_install_timer to flag whether to start it up on creation, thereby removing the need to temporary variables, additional function calls, etc. and making initialisation a quick and simple process and done in the same way (as per get mouse, get joystick, etc), e.g. the above code be reduced to:</p><div class="source-code snippet"><div class="inner"><pre>  ALLEGRO_EVENT_QUEUE <span class="k3">*</span>queue <span class="k3">=</span> al_create_event_queue<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
  al_register_event_source<span class="k2">(</span>queue, <span class="k2">(</span>ALLEGRO_EVENT_SOURCE<span class="k3">*</span><span class="k2">)</span>al_get_keyboard<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
  al_register_event_source<span class="k2">(</span>queue, <span class="k2">(</span>ALLEGRO_EVENT_SOURCE<span class="k3">*</span><span class="k2">)</span>al_install_timer<span class="k2">(</span><span class="n">1</span>.<span class="n">0</span><span class="k3">/</span>refresh_rate,<span class="k1">true</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Tue, 07 Apr 2009 21:47:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599845/804586#target">Christopher Bludau</a> said:</div><div class="quote"><p>You should have a look at this awesome allegro 5 tutorials</p></div></div><p>
Some of the examples coming with A5 also show a somewhat more robust way to handle updates by having optional frame skipping. If you redraw at each timer tick as in the tutorial you will run into problems on slow computers.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599845/804814#target">Neil Walker</a> said:</div><div class="quote"><p>Assuming this is the typical usage for timers, would it not be good to add an optional parameter to al_install_timer to flag whether to start it up on creation</p></div></div><p>

Sounds reasonable to me. Or maybe reduce it all even further to:
</p><div class="source-code snippet"><div class="inner"><pre>queue <span class="k3">=</span> al_init_simple<span class="k2">(</span><span class="n">640</span>, <span class="n">480</span>, <span class="n">1</span>.<span class="n">0</span> <span class="k3">/</span> <span class="n">60</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

with:
</p><div class="source-code snippet"><div class="inner"><pre>ALLEGRO_EVENT_QUEUE <span class="k3">*</span>al_init_simple<span class="k2">(</span><span class="k1">int</span> width, <span class="k1">int</span> height, <span class="k1">float</span> frequency<span class="k2">)</span>
<span class="k2">{</span>
    ALLEGRO_EVENT_QUEUE <span class="k3">*</span>queue <span class="k3">=</span> al_create_event_queue<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    al_create_display<span class="k2">(</span>width, height<span class="k2">)</span><span class="k2">;</span>
    al_install_keyboard<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    al_install_mouse<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    al_register_event_source<span class="k2">(</span>queue, al_get_keyboard<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
    al_register_event_source<span class="k2">(</span>queue, al_get_mouse<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
    al_register_event_source<span class="k2">(</span>queue, al_get_current_display<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
    ALLEGRO_TIMER <span class="k3">*</span>timer <span class="k3">=</span> al_install_timer<span class="k2">(</span><span class="n">1</span>.<span class="n">0</span> <span class="k3">/</span> frequency<span class="k2">)</span><span class="k2">;</span>
    al_register_event_source<span class="k2">(</span>queue, timer<span class="k2">)</span><span class="k2">;</span>
    al_start_timer<span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
    <span class="k1">return</span> queue<span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

I&#39;m sure this would cover the usage in most A5 programs.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Tue, 07 Apr 2009 22:14:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Or <tt>start_timer()</tt> could return <tt>ALLEGRO_TIMER*</tt> passed to it <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Milan Mimica)</author>
		<pubDate>Tue, 07 Apr 2009 22:15:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You&#39;ll want to grab the timer handler to be able to stop/pause the timer (for instance).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Wed, 08 Apr 2009 04:35:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How do you know how long the stuff in between starting the timer and the start of your main loop will take? I presume you&#39;d want to minimise that.  I&#39;d rather stick with explicitly starting the timer.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Wed, 08 Apr 2009 05:45:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599845/804903#target">Peter Wang</a> said:</div><div class="quote"><p>How do you know how long the stuff in between starting the timer and the start of your main loop will take? I presume you&#39;d want to minimise that. I&#39;d rather stick with explicitly starting the timer. </p></div></div><p>That&#39;s why I offered a boolean start up flag, you can have two values: true and false <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>I just see having to assign and not use objects as a waste, when function chaining is not available.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Wed, 08 Apr 2009 21:25:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599845/804822#target">Elias</a> said:</div><div class="quote"><p>
Some of the examples coming with A5 also show a somewhat more robust way to handle updates by having optional frame skipping. If you redraw at each timer tick as in the tutorial you will run into problems on slow computers.
</p></div></div><p>
Which ones? The main loops should be standardized for the examples at some point. As is there are various combinations of rest(1) loops, timer loops, delta time loops etc etc.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Wed, 08 Apr 2009 22:29:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yeah, I meant what most use, like e.g. ex_bitmap or ex_blit. I also don&#39;t see why you would use variable frame length or redraw depending on whether enough time to the last update has passed.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Wed, 08 Apr 2009 23:53:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599845/804985#target">Elias</a> said:</div><div class="quote"><p>
Yeah, I meant what most use, like e.g. ex_bitmap or ex_blit.
</p></div></div><p>
Most, but not all. IMHO they should all use it the system in ex_bitmap, or as outlined <a href="http://wiki.allegro.cc/index.php?title=Porting_from_A4_to_A5#Mainloop_and_events">here</a>. It is very flexible, and I like it.</p><p>I don&#39;t suppose there is a desire to introduce an <span class="source-code">al_game_loop<span class="k2">(</span><span class="k1">void</span> <span class="k2">(</span><span class="k3">*</span>logic<span class="k2">)</span><span class="k2">(</span><span class="k2">)</span>, <span class="k1">void</span> <span class="k2">(</span><span class="k3">*</span>input<span class="k2">)</span><span class="k2">(</span><span class="k2">)</span>, <span class="k1">void</span> <span class="k2">(</span><span class="k3">*</span>draw<span class="k2">)</span><span class="k2">(</span><span class="k2">)</span>, ALLEGRO_EVENT_QUEUE <span class="k3">*</span>queue<span class="k2">)</span></span> function to the library?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Thu, 09 Apr 2009 03:36:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I probably don&#39;t get this completely.<br />Would you care to elaborate on this a little bit? </p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599845/804822#target">Elias</a> said:</div><div class="quote"><p>
If you redraw at each timer tick as in the tutorial you will run into problems on slow computers.
</p></div></div><p>

Here is the problem I have. I don&#39;t see the real difference between the two solutions.<br />The tutorial I linked to does this:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>      <span class="k1">case</span> ALLEGRO_EVENT_TIMER:
<span class="number">  2</span>      <span class="k2">{</span>
<span class="number">  3</span>        <span class="c">// Determine the change in time between frames, in seconds</span>
<span class="number">  4</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a> <span class="k3">=</span> al_current_time<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>        dt <span class="k3">=</span> time-old_time<span class="k2">;</span>
<span class="number">  6</span>        
<span class="number">  7</span>        <span class="c">// If the computer lags for some reason, don't penalize the player</span>
<span class="number">  8</span>        <span class="c">// Cap dt at 0.5 seconds</span>
<span class="number">  9</span>        <span class="k1">if</span><span class="k2">(</span>dt <span class="k3">&gt;</span> <span class="n">0</span>.<span class="n">25</span><span class="k2">)</span> dt <span class="k3">=</span> <span class="n">0</span>.<span class="n">25</span><span class="k2">;</span>
<span class="number"> 10</span>
<span class="number"> 11</span>        <span class="c">// UPDATE                                </span>
<span class="number"> 12</span>        
<div class="highlight"><span class="number"> 13</span>        <span class="k1">if</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a> <span class="k3">-</span> event.timer.timestamp <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">1</span>.<span class="n">0</span><span class="k3">/</span>refresh_rate<span class="k2">)</span> <span class="k2">{</span> </div><span class="number"> 14</span>            <span class="c">// DRAWING</span>
<span class="number"> 15</span>        <span class="k2">}</span>    
<span class="number"> 16</span>        
<span class="number"> 17</span>        <span class="c">// Make the time at this frame the old time, for the next frame</span>
<span class="number"> 18</span>        old_time <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">;</span>
<span class="number"> 19</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 20</span>      <span class="k2">}</span>
</div></div><p>

So because of line 14 it doesn&#39;t draw on each tick. Or am I wrong?<br />Steve says on his <a href="http://software.skoobalon.com/docs/a5_tut02.php">site</a>:
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599845/805089#target">Christopher Bludau</a> said:</div><div class="quote"><p>
Each event is timestamped with the number of seconds since the program began. This conditional is checking that the tick event happened within the past frame. If the timer tick is from more than a frame ago, we disregard it and will not perform any drawing operatings.</p></div></div><p>

The difference I see in <a href="http://wiki.allegro.cc/index.php?title=Porting_from_A4_to_A5#Mainloop_and_events">this</a> example is, that drawing is only done, when the queue is empty. Why is this a good thing?</p><p>Hope I don&#39;t bother you too much with this questions. <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Thu, 09 Apr 2009 13:53:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The al_event_queue_is_empty(queue) is only for the case when the game runs really slow (1 FPS or so, because neither DirectX nor OpenGL acceleration is available). Then the events queue would fill up and you&#39;d have to wait a long time for something like pressing the Esc key or close button to register. The timestamp comparison might have the same effect though - we should make one of the examples use it to know.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Thu, 09 Apr 2009 16:22:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599845/805089#target">Christopher Bludau</a> said:</div><div class="quote"><p>
I don&#39;t see the real difference between the two solutions.
</p></div></div><p>
The wiki&#39;s method is fixed time step, and the tutorial&#39;s method is delta-time for one. Moreover, the tutorial&#39;s method doesn&#39;t really make sense to me, given that it is a delta time method... why would you call the update multiple times per frame? If you convert it to a fixed time method, then it should behave the same as the wiki&#39;s method, only be more complicated.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599845/805106#target">Elias</a> said:</div><div class="quote"><p>
The al_event_queue_is_empty(queue) is only for the case when the game runs really slow (1 FPS or so, because neither DirectX nor OpenGL acceleration is available)
</p></div></div><p>
No, it isn&#39;t. It&#39;s for when the game runs at any speed lower than the set FPS. Whenever the drawing operation takes more than 1/FPS time, there are multiple timer ticks that happen during it. al_event_queue_is_empty(queue) makes sure we take care of all of them before drawing, the standard fixed time stepping tactic.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Thu, 09 Apr 2009 21:35:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ahh, makes sense. For me, the only time that could happen is when using software routines (as otherwise drawing is nearly instant and there would never be multiple timer ticks if they are as slow as 60 per second). But, I interpreted it completely wrong... have yet to get completely accustomed to the events-based mindset after using the A4 way for so long <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Thu, 09 Apr 2009 22:10:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599845/805144#target">SiegeLord</a> said:</div><div class="quote"><p>
Whenever the drawing operation takes more than 1/FPS time, there are multiple timer ticks that happen during it.
</p></div></div><p>
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599845/805089#target">Christopher Bludau</a> said:</div><div class="quote"><p>
if(time - event.timer.timestamp &lt;= 1.0/refresh_rate)
</p></div></div><p>
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599845/805144#target">SiegeLord</a> said:</div><div class="quote"><p>
If you convert it to a fixed time method, then it should behave the same as the wiki&#39;s method, only be more complicated.
</p></div></div><p>

Given this informations I guess that this is not true?</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599845/804822#target">Elias</a> said:</div><div class="quote"><p>
Some of the examples coming with A5 also show a somewhat more robust way to handle updates by having optional frame skipping. If you redraw at each timer tick as in the tutorial you will run into problems on slow computers.
</p></div></div><p>

Otherwise I still don&#39;t see what is the problem with the code in the tutorial.<br />(I don&#39;t mean the delta time vs fixed time but that it may run into problems on slow computers)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Fri, 10 Apr 2009 00:31:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have problems with it too. When I start drawing too many texts, the game starts to lose too much performance! I also noticed that on slower computers, my games are not running as good as 4.2.2 runned <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /></p><p>I am using the software.skoobalon.com tutorials <img src="http://www.allegro.cc/forums/smileys/lipsrsealed.gif" alt=":-X" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (brunooo)</author>
		<pubDate>Fri, 17 Apr 2009 15:37:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>A5 uses Direct3D/OpenGL for all drawing operations and so the performance should only depend on your drivers (and usually it is <b>a lot</b> faster than A4 for everything you do).</p><p>However if for some reason you are using the software emulation of A5 it will be slow because unlike A4 alpha blending is on by default. You could try turning blending off and compare then, it will probably run at the same speed.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Fri, 17 Apr 2009 17:28:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I will try that! But text printing still bothers me :/
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (brunooo)</author>
		<pubDate>Fri, 17 Apr 2009 20:25:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Text output is slow. ex_ttf runs at 80FPS here, and all it does it displaying dozen of lines on the screen.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Milan Mimica)</author>
		<pubDate>Fri, 17 Apr 2009 21:51:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes, the ex_ttf here runs at 85 fps, but it uses 99% of cpu and when I open the Task Manager to see how much cpu % it uses, it crashes. I need to open the task manager first and then run it. <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (brunooo)</author>
		<pubDate>Sat, 25 Apr 2009 18:26:11 +0000</pubDate>
	</item>
</rss>
