<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>mouse flicker problem</title>
		<link>http://www.allegro.cc/forums/view/590344</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 02 Mar 2007 12:26:30 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Whenever I run my program in windowed mode the mouse is fine but when I go full screen it flickers...<br />relevant code
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">32</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  
<span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED,<span class="n">1024</span>,<span class="n">768</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span>
<span class="k2">{</span>
    <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/allegro_error" target="_blank"><span class="a">allegro_error</span></a><span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
<a href="http://www.allegro.cc/manual/show_mouse" target="_blank"><span class="a">show_mouse</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
and the screen rendering part.
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/vsync" target="_blank"><span class="a">vsync</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer,<a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>,<a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

I do rest as a way of slowing the game down, I tried to use the tick method but I couldn&#39;t even get that to compile so if you think that&#39;s the issue let me know and if you know of where a tutorial is off the top of your head let em know, if not, I&#39;ll google. :-D
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Charles256)</author>
		<pubDate>Thu, 01 Mar 2007 21:11:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Read about those two functions:
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/scare_mouse" target="_blank"><span class="a">scare_mouse</span></a><span class="k2">(</span><span class="k2">)</span>
<a href="http://www.allegro.cc/manual/unscare_mouse" target="_blank"><span class="a">unscare_mouse</span></a><span class="k2">(</span><span class="k2">)</span>
</pre></div></div><p>

You should &quot;scare&quot; the mouse prior to drawing to the screen, and unscare it after you&#39;re done using screen.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jakub Wasilewski)</author>
		<pubDate>Thu, 01 Mar 2007 21:21:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That helped some, it went from being invisible (unless i moved it), to being visible for flickering like a mad man,ideas?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Charles256)</author>
		<pubDate>Thu, 01 Mar 2007 21:28:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Show all the code you have for the main loop (where drawing happens).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jakub Wasilewski)</author>
		<pubDate>Thu, 01 Mar 2007 22:14:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">void</span> setup<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>    <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>  <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">32</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>  <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>  <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">7</td><td>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT,<span class="n">1024</span>,<span class="n">768</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">8</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">9</td><td>    <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/allegro_error" target="_blank"><span class="a">allegro_error</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">13</td><td>  <a href="http://www.allegro.cc/manual/show_mouse" target="_blank"><span class="a">show_mouse</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>  </td></tr><tr><td class="number">15</td><td><span class="k2">}</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">19</td><td><span class="k2">{</span></td></tr><tr><td class="number">20</td><td>  setup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// sets up the screen</span></td></tr><tr><td class="number">21</td><td>  buffering game_screen<span class="k2">;</span> <span class="c">// creates an object where our screen will be held, handles</span></td></tr><tr><td class="number">22</td><td>  <span class="c">// double buffering for us.</span></td></tr><tr><td class="number">23</td><td>  select_character_menu character_menu<span class="k2">(</span>game_screen<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>  main_menu my_main_menu<span class="k2">(</span>game_screen<span class="k2">)</span><span class="k2">;</span> <span class="c">// we want to set up the main menu so we pass</span></td></tr><tr><td class="number">25</td><td>  <span class="c">// it a reference to game screen so it knows where to set up stuff. kind of important :-D</span></td></tr><tr><td class="number">26</td><td>  <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>game_over<span class="k2">)</span></td></tr><tr><td class="number">27</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">28</td><td>    <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">29</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">30</td><td>      <span class="k1">int</span> answer<span class="k3">=</span><a href="http://www.allegro.cc/manual/alert" target="_blank"><span class="a">alert</span></a><span class="k2">(</span><span class="s">"Really Quit?"</span>, NULL, NULL, <span class="s">"&amp;Yes"</span>, <span class="s">"&amp;No"</span>, <span class="s">'y'</span>, <span class="s">'n'</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>        <span class="k1">if</span> <span class="k2">(</span>answer <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">32</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">33</td><td>        game_over<span class="k3">=</span><span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">35</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">36</td><td>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>game_state<span class="k3">=</span><span class="k3">=</span><span class="s">"main_menu"</span><span class="k2">)</span></td></tr><tr><td class="number">37</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">38</td><td>      my_main_menu.render_menu<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="c">// puts the main menu onto the buffer    </span></td></tr><tr><td class="number">39</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">40</td><td>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>game_state<span class="k3">=</span><span class="k3">=</span><span class="s">"new_game"</span><span class="k2">)</span></td></tr><tr><td class="number">41</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">42</td><td>      character_menu.render_menu<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">44</td><td>&#160;</td></tr><tr><td class="number">45</td><td>    <a href="http://www.allegro.cc/manual/scare_mouse" target="_blank"><span class="a">scare_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>    game_screen.render<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// puts the buffer onto the viewable screen removing the flickering</span></td></tr><tr><td class="number">47</td><td>    <a href="http://www.allegro.cc/manual/unscare_mouse" target="_blank"><span class="a">unscare_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>    <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">30</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>    </td></tr><tr><td class="number">50</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">51</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td><span class="k2">}</span></td></tr><tr><td class="number">53</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>
buffering code
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;string&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;vector&gt;</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">6</td><td><span class="p">#ifndef BUFFERING</span></td></tr><tr><td class="number">7</td><td><span class="p">#define BUFFERING</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td><span class="c">// i know globals make me a bad person but this is a special circumstance</span></td></tr><tr><td class="number">10</td><td><span class="c">// game over is something that will be used everywhere and in this one instance</span></td></tr><tr><td class="number">11</td><td><span class="c">// i'm breaking the rule.</span></td></tr><tr><td class="number">12</td><td><span class="k1">bool</span> game_over<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>string game_state<span class="k3">=</span><span class="s">"main_menu"</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td><span class="k1">class</span> buffering</td></tr><tr><td class="number">15</td><td><span class="k2">{</span></td></tr><tr><td class="number">16</td><td>  private: </td></tr><tr><td class="number">17</td><td>    <span class="c">// we'l need a buffer and a vector to hold reference to location of bitmaps.</span></td></tr><tr><td class="number">18</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> buffer<span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    vector<span class="k3">&lt;</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k3">&gt;</span> bitmaps<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td>  public:</td></tr><tr><td class="number">22</td><td>    buffering<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">23</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">24</td><td>      <span class="c">// the buffer needs to be the entire screen</span></td></tr><tr><td class="number">25</td><td>      <span class="c">// so we use allegro defined variables to make it so.</span></td></tr><tr><td class="number">26</td><td>      buffer<span class="k3">=</span><a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>,<a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">28</td><td>    <span class="k1">void</span> mark_bitmap_for_deletion<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>picture<span class="k2">)</span></td></tr><tr><td class="number">29</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">30</td><td>      bitmaps.push_back<span class="k2">(</span>picture<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">32</td><td>&#160;</td></tr><tr><td class="number">33</td><td>    <span class="c">// this is just a wrapper for load_bitmap so we can add their memory locations</span></td></tr><tr><td class="number">34</td><td>    <span class="c">// into a vector for automatic deletion later on.</span></td></tr><tr><td class="number">35</td><td>    <span class="k1">void</span> add_bitmap<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>picture,<span class="k1">int</span> x<span class="k3">=</span><span class="n">0</span>,<span class="k1">int</span> y<span class="k3">=</span><span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">36</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">37</td><td>      <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer,picture,x,y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">39</td><td>&#160;</td></tr><tr><td class="number">40</td><td>    <span class="c">// same thign as above</span></td></tr><tr><td class="number">41</td><td>    <span class="k1">void</span> add_stretched_bitmap<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> picture,<span class="k1">int</span> x<span class="k3">=</span><span class="n">0</span>, <span class="k1">int</span> y<span class="k3">=</span><span class="n">0</span>,<span class="k1">int</span> width<span class="k3">=</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <span class="k1">int</span> height<span class="k3">=</span><a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span></td></tr><tr><td class="number">42</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">43</td><td>      <a href="http://www.allegro.cc/manual/stretch_sprite" target="_blank"><span class="a">stretch_sprite</span></a><span class="k2">(</span>buffer,picture,x,y,width,height<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">45</td><td>&#160;</td></tr><tr><td class="number">46</td><td>    <span class="c">// draw the buffer to the screen</span></td></tr><tr><td class="number">47</td><td>    <span class="k1">void</span> render<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">48</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">49</td><td>      <a href="http://www.allegro.cc/manual/vsync" target="_blank"><span class="a">vsync</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td>      <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer,<a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>,<a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">52</td><td>&#160;</td></tr><tr><td class="number">53</td><td>    <span class="k1">void</span> add_text<span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span>text,<span class="k1">int</span> color, <span class="k1">int</span> x, <span class="k1">int</span> y<span class="k2">)</span></td></tr><tr><td class="number">54</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">55</td><td>      <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer,<a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>,x,y,color,<span class="n">1</span>,text<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">57</td><td>&#160;</td></tr><tr><td class="number">58</td><td>    <span class="c">//dynamically destroy all the bitmaps. good stuff. :-D</span></td></tr><tr><td class="number">59</td><td>    <span class="c">// beats the hell out of 20 million calls to destroy_bitmap</span></td></tr><tr><td class="number">60</td><td>    ~buffering<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">61</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">62</td><td>      <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span>bitmaps.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">63</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">64</td><td>        <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bitmaps<span class="k3">&lt;</span>i&gt;<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">65</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">66</td><td>      bitmaps.empty<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">68</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">69</td><td>&#160;</td></tr><tr><td class="number">70</td><td><span class="p">#endif</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Charles256)</author>
		<pubDate>Thu, 01 Mar 2007 23:00:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>In a fully double buffering system (read: anything other than dirty rectangles), I found the best solution for the mouse pointer is to just draw the mouse sprite manually by calling the following right before blitting / flipping:
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>backbuffer, <a href="http://www.allegro.cc/manual/mouse_sprite" target="_blank"><span class="a">mouse_sprite</span></a>, <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a>, <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
...and not activate the built-in mouse pointer at all (call show_mouse(NULL) just to be sure). As long as the double buffering system works reasonably fast, you get smooth, flicker-free mouse movement without any buffering artifacts (the odd wrong-color rectangles you sometimes see under the mouse cursor in windows).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tobias Dammers)</author>
		<pubDate>Fri, 02 Mar 2007 01:35:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Think about the order of things.
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/scare_mouse" target="_blank"><span class="a">scare_mouse</span></a><span class="k2">(</span><span class="k2">)</span>
<span class="c">// ...</span>
<a href="http://www.allegro.cc/manual/vsync" target="_blank"><span class="a">vsync</span></a><span class="k2">(</span><span class="k2">)</span>
<a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>...<span class="k2">)</span>
<span class="c">// ...</span>
<a href="http://www.allegro.cc/manual/unscare_mouse" target="_blank"><span class="a">unscare_mouse</span></a><span class="k2">(</span><span class="k2">)</span>
</pre></div></div><p>

So, you hide the mouse, and then execute vsync, which waits (potentially a <b>long</b> time) for a vertical refresh, and only then you show it again. This means the mouse stays hidden for the whole time of the wait.</p><p>Instead, reorder the calls so that the mouse is hidden for the shortest interval neccessary:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">class</span> buffering<span class="k2">{</span>
<span class="c">//...</span>
  <span class="k1">void</span> render<span class="k2">(</span><span class="k2">)</span>
  <span class="k2">{</span>
    <a href="http://www.allegro.cc/manual/vsync" target="_blank"><span class="a">vsync</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/scare_mouse" target="_blank"><span class="a">scare_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer,<a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>,<a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/unscare_mouse" target="_blank"><span class="a">unscare_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
  <span class="k2">}</span><span class="k2">;</span>
<span class="k2">}</span><span class="k2">;</span>
</pre></div></div><p>

That might help, but I&#39;m not sure at that point - I haven&#39;t used Allegro&#39;s built-in mouse handling for a long while.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jakub Wasilewski)</author>
		<pubDate>Fri, 02 Mar 2007 03:33:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>And on a side note: What&#39;s with the bitmap vector in the buffering class?<br />From your comments, I take it you&#39;re trying to implement some sort of garbage collection scheme for the bitmaps you load on-the-fly...<br />I&#39;d suggest you implement a resource handler and put that in a dedicated class. It can be as simple as loading an entire datafile and return the correct bitmap when asked to. More sophisticated approaches will allow for dynamic loading (load on demand), loading and unloading multiple datafiles, etc. But for now I&#39;d say keep it at load_datafile at startup and unload_datafile when done.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tobias Dammers)</author>
		<pubDate>Fri, 02 Mar 2007 12:26:30 +0000</pubDate>
	</item>
</rss>
