<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>rest() + save_bitmap() clashes?</title>
		<link>http://www.allegro.cc/forums/view/586658</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 25 Jul 2006 19:41:32 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>My game calls the rest command to reduce CPU usage.  However, after calling save_bitmap (called by a specific keypress to take snapshots), trouble begins.  About 10 seconds after making the call to save_bitmap, my palette goes all wonky.  I haven&#39;t studied it very closely, but I think it may be reverting to the system palette.  Any ideas why?  If I don&#39;t call save_bitmap (just return from the snapshot code) or remove the call to rest, everything is fine.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dark Nation)</author>
		<pubDate>Tue, 25 Jul 2006 01:26:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sounds like memory problems. Accessing memory haven&#39;t allocated, broken pointers, dangling pointers, etc.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Tue, 25 Jul 2006 04:36:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ve whittled down the code to about 100 lines (including several blank lines) and am still getting the error.  Can anyone take a look and see if they get the same problem?</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>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">bool</span> quit<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td><span class="k1">int</span> d_nbmenu_proc<span class="k2">(</span><span class="k1">int</span> msg,<a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> <span class="k3">*</span>d,<span class="k1">int</span> c<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="k1">int</span> onExit<span class="k2">(</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.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td><span class="k2">}</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td><span class="k1">static</span> <a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> the_menu<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">13</td><td><span class="k2">{</span></td></tr><tr><td class="number">14</td><td>  <span class="k2">{</span> <span class="s">"&amp;Exit"</span>,          onExit,            NULL <span class="k2">}</span>,</td></tr><tr><td class="number">15</td><td>  <span class="k2">{</span> NULL <span class="k2">}</span></td></tr><tr><td class="number">16</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td><span class="k1">int</span> onSnapshot<span class="k2">(</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>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>screen2 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap_ex" target="_blank"><span class="a">create_bitmap_ex</span></a><span class="k2">(</span><span class="n">8</span>,<span class="n">320</span>,<span class="n">240</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>  <span class="k1">char</span> buf<span class="k2">[</span><span class="n">20</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>  <span class="k1">int</span> num<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>  <span class="k1">do</span></td></tr><tr><td class="number">24</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">25</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>buf, <span class="s">"test%03d.bmp"</span>, <span class="k3">+</span><span class="k3">+</span>num<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>  <span class="k2">}</span> <span class="k1">while</span><span class="k2">(</span>num<span class="k3">&lt;</span><span class="n">999</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/exists" target="_blank"><span class="a">exists</span></a><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>&#160;</td></tr><tr><td class="number">28</td><td>  <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,screen2,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">320</span>,<span class="n">240</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>  <a href="http://www.allegro.cc/manual/PALETTE" target="_blank"><span class="a">PALETTE</span></a> temppal<span class="k2">;</span></td></tr><tr><td class="number">30</td><td>  <a href="http://www.allegro.cc/manual/get_palette" target="_blank"><span class="a">get_palette</span></a><span class="k2">(</span>temppal<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>  <a href="http://www.allegro.cc/manual/save_bitmap" target="_blank"><span class="a">save_bitmap</span></a><span class="k2">(</span>buf,screen2,temppal<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>screen2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>  <span class="k1">return</span> D_O_K<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>&#160;</td></tr><tr><td class="number">36</td><td><span class="k1">static</span> <a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> dialogs<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">37</td><td><span class="k2">{</span></td></tr><tr><td class="number">38</td><td>  <span class="k2">{</span> d_nbmenu_proc,     <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">13</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,       D_USER,  <span class="n">0</span>,        <span class="n">0</span>,       <span class="k2">(</span><span class="k1">void</span> <span class="k3">*</span><span class="k2">)</span> the_menu <span class="k2">}</span>,</td></tr><tr><td class="number">39</td><td>  <span class="k2">{</span> <a href="http://www.allegro.cc/manual/d_keyboard_proc" target="_blank"><span class="a">d_keyboard_proc</span></a>,   <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="s">'z'</span>,     <span class="n">0</span>,       <span class="n">0</span>,        <span class="n">0</span>,       <span class="k2">(</span><span class="k1">void</span> <span class="k3">*</span><span class="k2">)</span> onSnapshot <span class="k2">}</span>,</td></tr><tr><td class="number">40</td><td>  <span class="k2">{</span> <a href="http://www.allegro.cc/manual/d_keyboard_proc" target="_blank"><span class="a">d_keyboard_proc</span></a>,   <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">27</span>,      <span class="n">0</span>,       <span class="n">0</span>,        <span class="n">0</span>,       <span class="k2">(</span><span class="k1">void</span> <span class="k3">*</span><span class="k2">)</span> onExit <span class="k2">}</span>,<span class="c">//</span></td></tr><tr><td class="number">41</td><td>  <span class="k2">{</span> NULL,              <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,       <span class="n">0</span>,       <span class="n">0</span>,        <span class="n">0</span>,       NULL <span class="k2">}</span></td></tr><tr><td class="number">42</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>&#160;</td></tr><tr><td class="number">44</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc,<span class="k1">char</span> <span class="k3">*</span><span class="k3">*</span>argv<span class="k2">)</span></td></tr><tr><td class="number">45</td><td><span class="k2">{</span></td></tr><tr><td class="number">46</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">47</td><td>&#160;</td></tr><tr><td class="number">48</td><td>  <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">49</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">50</td><td>    <a href="http://www.allegro.cc/manual/al_trace" target="_blank"><span class="a">al_trace</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">51</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">52</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">53</td><td>&#160;</td></tr><tr><td class="number">54</td><td>  <span class="k1">if</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="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">55</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">56</td><td>    <a href="http://www.allegro.cc/manual/al_trace" target="_blank"><span class="a">al_trace</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">57</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">58</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">59</td><td>&#160;</td></tr><tr><td class="number">60</td><td>  <span class="k1">if</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="k3">&lt;</span> <span class="n">0</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>    <a href="http://www.allegro.cc/manual/al_trace" target="_blank"><span class="a">al_trace</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">63</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">64</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">65</td><td>&#160;</td></tr><tr><td class="number">66</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">8</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</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_FULLSCREEN,<span class="n">320</span>,<span class="n">240</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">68</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">69</td><td>    <a href="http://www.allegro.cc/manual/al_trace" target="_blank"><span class="a">al_trace</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">70</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">71</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">72</td><td>  <span class="k1">else</span></td></tr><tr><td class="number">73</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">74</td><td>    <a href="http://www.allegro.cc/manual/al_trace" target="_blank"><span class="a">al_trace</span></a><span class="k2">(</span><span class="s">"OK\n"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">76</td><td>  <a href="http://www.allegro.cc/manual/DIALOG_PLAYER" target="_blank"><span class="a">DIALOG_PLAYER</span></a> <span class="k3">*</span>player<span class="k3">=</span><a href="http://www.allegro.cc/manual/init_dialog" target="_blank"><span class="a">init_dialog</span></a><span class="k2">(</span>dialogs,<span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">77</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">78</td><td>  quit<span class="k3">=</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/update_dialog" target="_blank"><span class="a">update_dialog</span></a><span class="k2">(</span>player<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">79</td><td>  <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>quit<span class="k2">)</span></td></tr><tr><td class="number">80</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">81</td><td>    quit <span class="k3">=</span> <span class="k3">!</span><a href="http://www.allegro.cc/manual/update_dialog" target="_blank"><span class="a">update_dialog</span></a><span class="k2">(</span>player<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">82</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">83</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">84</td><td><span class="k2">}</span></td></tr><tr><td class="number">85</td><td>&#160;</td></tr><tr><td class="number">86</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><tr><td class="number">87</td><td>&#160;</td></tr><tr><td class="number">88</td><td><span class="k1">int</span> d_nbmenu_proc<span class="k2">(</span><span class="k1">int</span> msg,<a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> <span class="k3">*</span>d,<span class="k1">int</span> c<span class="k2">)</span></td></tr><tr><td class="number">89</td><td><span class="k2">{</span></td></tr><tr><td class="number">90</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">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">91</td><td>  <span class="k1">return</span> <a href="http://www.allegro.cc/manual/d_menu_proc" target="_blank"><span class="a">d_menu_proc</span></a><span class="k2">(</span>msg,d,c<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">92</td><td><span class="k2">}</span></td></tr><tr><td class="number">93</td><td>&#160;</td></tr><tr><td class="number">94</td><td><span class="c">/* end */</span></td></tr></tbody></table></div></div><p>

I compiled it with:
</p><div class="source-code snippet"><div class="inner"><pre>g<span class="k3">+</span><span class="k3">+</span> <span class="k3">-</span>o test.exe test.cpp <span class="k3">-</span>lalleg
</pre></div></div><p>
When you run it, hit the <b>Z</b> key on the keyboard.  After about 5 to 10 seconds, the mouse will change colors.  I have a strange feeling that it&#39;s because I have a rest command inside of a dialog procedure.  Is that the problem?  Is there a way to make it work?  I&#39;ve even tried replacing the nbmenu_proc with rest_proc, which I defined as:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> d_rest_proc<span class="k2">(</span><span class="k1">int</span> msg,<a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> <span class="k3">*</span>d,<span class="k1">int</span> c<span class="k2">)</span>
<span class="k2">{</span>
  <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a> <span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
  <span class="k1">return</span> D_O_K<span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
This still gives me the same bug.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dark Nation)</author>
		<pubDate>Tue, 25 Jul 2006 17:51:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This may be completely irrelevant, but </p><div class="source-code snippet"><div class="inner"><pre><span class="k1">do</span>
<span class="k2">{</span>
    <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>buf, <span class="s">"test%03d.bmp"</span>, <span class="k3">+</span><span class="k3">+</span>num<span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span> <span class="k1">while</span><span class="k2">(</span>num<span class="k3">&lt;</span><span class="n">999</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/exists" target="_blank"><span class="a">exists</span></a><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>What is this supposed to do?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kauhiz)</author>
		<pubDate>Tue, 25 Jul 2006 18:48:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It finds the first unused testXXX.bmp filename.</p><p>I even tried taking that part out and just using a static filename.  Same bug.</p><p>I even copied the update_dialog function into my code and whittled it down as much as possible while still keeping the bug.  I even took out the keyboard_proc and replaced it with specific functions.  After doing that and a little more whittling, here is the current incarnation:
</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>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">bool</span> quit<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td><span class="k1">int</span> d_rest_proc<span class="k2">(</span><span class="k1">int</span> msg,<a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> <span class="k3">*</span>d,<span class="k1">int</span> c<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="k1">int</span> onExit<span class="k2">(</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.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td><span class="k2">}</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td><span class="k1">int</span> onSnapshot<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">13</td><td><span class="k2">{</span></td></tr><tr><td class="number">14</td><td>  <a href="http://www.allegro.cc/manual/PALETTE" target="_blank"><span class="a">PALETTE</span></a> temppal<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>  <a href="http://www.allegro.cc/manual/get_palette" target="_blank"><span class="a">get_palette</span></a><span class="k2">(</span>temppal<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>  <a href="http://www.allegro.cc/manual/save_bitmap" target="_blank"><span class="a">save_bitmap</span></a><span class="k2">(</span><span class="s">"test.bmp"</span>,<a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,temppal<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>  <span class="k1">return</span> D_O_K<span class="k2">;</span></td></tr><tr><td class="number">18</td><td><span class="k2">}</span></td></tr><tr><td class="number">19</td><td>&#160;</td></tr><tr><td class="number">20</td><td><span class="k1">int</span> d_exit_proc<span class="k2">(</span><span class="k1">int</span> msg, <a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> <span class="k3">*</span>d, <span class="k1">int</span> c<span class="k2">)</span></td></tr><tr><td class="number">21</td><td><span class="k2">{</span></td></tr><tr><td class="number">22</td><td>  <span class="k1">if</span> <span class="k2">(</span>msg<span class="k3">=</span><span class="k3">=</span>MSG_KEY<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">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>  <span class="k1">return</span> D_O_K<span class="k2">;</span></td></tr><tr><td class="number">24</td><td><span class="k2">}</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td><span class="k1">int</span> d_snapshot_proc<span class="k2">(</span><span class="k1">int</span> msg, <a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> <span class="k3">*</span>d, <span class="k1">int</span> c<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>msg<span class="k3">=</span><span class="k3">=</span>MSG_KEY<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>    <a href="http://www.allegro.cc/manual/PALETTE" target="_blank"><span class="a">PALETTE</span></a> temppal<span class="k2">;</span></td></tr><tr><td class="number">31</td><td>    <a href="http://www.allegro.cc/manual/get_palette" target="_blank"><span class="a">get_palette</span></a><span class="k2">(</span>temppal<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>    <a href="http://www.allegro.cc/manual/save_bitmap" target="_blank"><span class="a">save_bitmap</span></a><span class="k2">(</span><span class="s">"test.bmp"</span>,<a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,temppal<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">34</td><td>  <span class="k1">return</span> D_O_K<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>&#160;</td></tr><tr><td class="number">37</td><td><span class="k1">static</span> <a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> dialogs<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">38</td><td><span class="k2">{</span></td></tr><tr><td class="number">39</td><td>  <span class="k2">{</span> d_rest_proc,     <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">13</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,       D_USER,  <span class="n">0</span>,        <span class="n">0</span>,       NULL <span class="k2">}</span>,</td></tr><tr><td class="number">40</td><td>  <span class="k2">{</span> d_snapshot_proc,   <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="s">'z'</span>,     <span class="n">0</span>,       <span class="n">0</span>,        <span class="n">0</span>,       NULL <span class="k2">}</span>,</td></tr><tr><td class="number">41</td><td>  <span class="k2">{</span> d_exit_proc,   <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="s">'x'</span>,      <span class="n">0</span>,       <span class="n">0</span>,        <span class="n">0</span>,       NULL <span class="k2">}</span>,</td></tr><tr><td class="number">42</td><td>  <span class="k2">{</span> NULL,              <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,       <span class="n">0</span>,       <span class="n">0</span>,        <span class="n">0</span>,       NULL <span class="k2">}</span></td></tr><tr><td class="number">43</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>&#160;</td></tr><tr><td class="number">45</td><td><span class="k1">int</span> update_dialog2<span class="k2">(</span><a href="http://www.allegro.cc/manual/DIALOG_PLAYER" target="_blank"><span class="a">DIALOG_PLAYER</span></a> <span class="k3">*</span>player<span class="k2">)</span></td></tr><tr><td class="number">46</td><td><span class="k2">{</span></td></tr><tr><td class="number">47</td><td>   <span class="k1">int</span> c, cascii, cscan, ccombo, r, ret<span class="k2">;</span></td></tr><tr><td class="number">48</td><td>&#160;</td></tr><tr><td class="number">49</td><td>   <span class="c">/* deal with keyboard input */</span></td></tr><tr><td class="number">50</td><td>   <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><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>     cascii <span class="k3">=</span> <a href="http://www.allegro.cc/manual/readkey" target="_blank"><span class="a">readkey</span></a><span class="k2">(</span><span class="k2">)</span><span class="k3">&amp;</span><span class="n">0xFF</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>&#160;</td></tr><tr><td class="number">54</td><td>      <span class="c">/* keyboard shortcut? */</span></td></tr><tr><td class="number">55</td><td>      <span class="k1">for</span> <span class="k2">(</span>c<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> player-&gt;dialog<span class="k2">[</span>c<span class="k2">]</span>.proc<span class="k2">;</span> c<span class="k3">+</span><span class="k3">+</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>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/utolower" target="_blank"><span class="a">utolower</span></a><span class="k2">(</span>player-&gt;dialog<span class="k2">[</span>c<span class="k2">]</span>.<a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/utolower" target="_blank"><span class="a">utolower</span></a><span class="k2">(</span>cascii<span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">58</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">59</td><td>          <a href="http://www.allegro.cc/manual/object_message" target="_blank"><span class="a">object_message</span></a><span class="k2">(</span>player-&gt;dialog<span class="k3">+</span>c, MSG_KEY, cascii<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>          <span class="k1">goto</span> getout<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="k2">}</span></td></tr><tr><td class="number">63</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">64</td><td>&#160;</td></tr><tr><td class="number">65</td><td>   <span class="c">/* send idle messages */</span></td></tr><tr><td class="number">66</td><td>   player-&gt;res <span class="k3">|</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/dialog_message" target="_blank"><span class="a">dialog_message</span></a><span class="k2">(</span>player-&gt;dialog, MSG_IDLE, <span class="n">0</span>, <span class="k3">&amp;</span>player-&gt;obj<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>&#160;</td></tr><tr><td class="number">68</td><td>   getout:</td></tr><tr><td class="number">69</td><td>&#160;</td></tr><tr><td class="number">70</td><td>   <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">71</td><td><span class="k2">}</span></td></tr><tr><td class="number">72</td><td>&#160;</td></tr><tr><td class="number">73</td><td>&#160;</td></tr><tr><td class="number">74</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc,<span class="k1">char</span> <span class="k3">*</span><span class="k3">*</span>argv<span class="k2">)</span></td></tr><tr><td class="number">75</td><td><span class="k2">{</span></td></tr><tr><td class="number">76</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">77</td><td>&#160;</td></tr><tr><td class="number">78</td><td>  <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">79</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">80</td><td>    <a href="http://www.allegro.cc/manual/al_trace" target="_blank"><span class="a">al_trace</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">81</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">82</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">83</td><td>&#160;</td></tr><tr><td class="number">84</td><td>  <span class="k1">if</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="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">85</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">86</td><td>    <a href="http://www.allegro.cc/manual/al_trace" target="_blank"><span class="a">al_trace</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">87</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">88</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">89</td><td>&#160;</td></tr><tr><td class="number">90</td><td>  <span class="k1">if</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="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">91</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">92</td><td>    <a href="http://www.allegro.cc/manual/al_trace" target="_blank"><span class="a">al_trace</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">93</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">94</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">95</td><td>&#160;</td></tr><tr><td class="number">96</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">8</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">97</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_FULLSCREEN,<span class="n">320</span>,<span class="n">240</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">98</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">99</td><td>    <a href="http://www.allegro.cc/manual/al_trace" target="_blank"><span class="a">al_trace</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">100</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">101</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">102</td><td>  <span class="k1">else</span></td></tr><tr><td class="number">103</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">104</td><td>    <a href="http://www.allegro.cc/manual/al_trace" target="_blank"><span class="a">al_trace</span></a><span class="k2">(</span><span class="s">"OK\n"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">105</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">106</td><td>  <a href="http://www.allegro.cc/manual/DIALOG_PLAYER" target="_blank"><span class="a">DIALOG_PLAYER</span></a> <span class="k3">*</span>player<span class="k3">=</span><a href="http://www.allegro.cc/manual/init_dialog" target="_blank"><span class="a">init_dialog</span></a><span class="k2">(</span>dialogs,<span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">107</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">108</td><td>  quit<span class="k3">=</span><span class="k3">!</span>update_dialog2<span class="k2">(</span>player<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">109</td><td>  <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>quit<span class="k2">)</span></td></tr><tr><td class="number">110</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">111</td><td>    quit <span class="k3">=</span> <span class="k3">!</span>update_dialog2<span class="k2">(</span>player<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">112</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">113</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">114</td><td><span class="k2">}</span></td></tr><tr><td class="number">115</td><td>&#160;</td></tr><tr><td class="number">116</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><tr><td class="number">117</td><td>&#160;</td></tr><tr><td class="number">118</td><td><span class="k1">int</span> d_rest_proc<span class="k2">(</span><span class="k1">int</span> msg,<a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> <span class="k3">*</span>d,<span class="k1">int</span> c<span class="k2">)</span></td></tr><tr><td class="number">119</td><td><span class="k2">{</span></td></tr><tr><td class="number">120</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">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">121</td><td>  <span class="k1">return</span> D_O_K<span class="k2">;</span></td></tr><tr><td class="number">122</td><td><span class="k2">}</span></td></tr><tr><td class="number">123</td><td>&#160;</td></tr><tr><td class="number">124</td><td><span class="c">/* end */</span></td></tr></tbody></table></div></div><p>

Thoughts?  The bug seems to have something to do with MSG_IDLE messages.  When I take out this line from update_dialog2:
</p><div class="source-code snippet"><div class="inner"><pre>player-&gt;res <span class="k3">|</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/dialog_message" target="_blank"><span class="a">dialog_message</span></a><span class="k2">(</span>player-&gt;dialog, MSG_IDLE, <span class="n">0</span>, <span class="k3">&amp;</span>player-&gt;obj<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
...the bug goes away.</p><p>Edit:  I just ran my original code and put a graphical display of the current palette on the screen.  All of the colors change to what seems to be the default palette.  What&#39;s worse, when I do a set_palette from a master palette I set up, the last 10 palette entries won&#39;t change.  Odder still is the fact that if I output (through al_trace) the palette entries before and after the odd palette change, the values are the same.  But, for some reason, the wrong colors are being displayed on the screen.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dark Nation)</author>
		<pubDate>Tue, 25 Jul 2006 19:41:32 +0000</pubDate>
	</item>
</rss>
