<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Display stops updating if I change the backbuffer-- What am I doing wrong?</title>
		<link>http://www.allegro.cc/forums/view/616404</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 31 Jul 2016 02:58:16 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ve been using Allegro for a while, but I&#39;ve encountered a couple of issues that make me question whether or not I&#39;m using it correctly.</p><p>The part of my code that handles the drawing looks like 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="c">// Switch to the "scene" bitmap.</span>
<span class="number">  2</span><a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>__scene_bitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="c">// Draw stuff (objects, GUI, whatever)</span>
<span class="number">  5</span>
<span class="number">  6</span><span class="c">// Switch back to the display's buffer.</span>
<span class="number">  7</span><a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_backbuffer"><span class="a">al_get_backbuffer</span></a><span class="k2">(</span>__main_display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>
<span class="number">  9</span><span class="c">// Draw the "scene" bitmap.</span>
<span class="number"> 10</span><a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>__scene_bitmap, <span class="n">0</span>.<span class="n">0f</span>, <span class="n">0</span>.<span class="n">0f</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>
<span class="number"> 12</span><span class="c">// Flip display</span>
<span class="number"> 13</span><a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p>

Everything works as expected... Or so it seems. If I press Ctrl+Alt+Del, then get out of the menu that appears and then go back to the game, the display is no longer updating, but stuck showing the state of the display before I pressed Ctrl+Alt+Del. This also occurs when Windows&#39; UAC is triggered.</p><p>It made me wonder if the event loop stopped for some reason, but nope-- it&#39;s still chugging along, and the drawing code is being called, it&#39;s just no longer being shown on the display.</p><p>If I comment out this line...</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><a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>__scene_bitmap<span class="k2">)</span><span class="k2">;</span>
</div></div><p>

... It works fine, and the problem no longer occurs, so it has something to do with changing the target bitmap.</p><p>On a related note, I use this code to toggle full-screen:</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><a href="http://www.allegro.cc/manual/al_toggle_display_flag"><span class="a">al_toggle_display_flag</span></a><span class="k2">(</span>__main_display, ALLEGRO_FULLSCREEN_WINDOW, fullscreen<span class="k2">)</span><span class="k2">;</span>
</div></div><p>

When I don&#39;t change the target bitmap, this code works as expected (the display is now full-screen). However, if I <i>do</i> change the target bitmap, the display just disappears when this is called and no longer responds. It seems like it does go full-screen (because it blocks all mouse-clicks), it&#39;s just invisible and I can&#39;t do anything with it.</p><p>Any idea what I&#39;m doing wrong, or how I can fix this?</p><p><b>PS:</b> I definitely need to be able to be able to change the target bitmap; commenting that line out permanently isn&#39;t an option (my coordinate system among other things relies on this).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (xsquid)</author>
		<pubDate>Sat, 30 Jul 2016 15:12:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What platform are you developing on? Mac, windows, Linux?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (princeofspace)</author>
		<pubDate>Sun, 31 Jul 2016 00:10:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for the reply!</p><p>I&#39;m using Windows 8.1 with Allegro 5.20. I haven&#39;t verified the issue in Linux, because I don&#39;t know what the equivalent of the Ctrl+Alt+Del screen/Windows&#39; UAC pop-ups would be...</p><p>Also, if it helps, I put together a full example to show the problem:</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="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  4</span>
<span class="number">  5</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a><span class="k3">*</span> display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span><span class="n">640</span>, <span class="n">480</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a><span class="k3">*</span> event_queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a><span class="k3">*</span> timer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">0f</span> <span class="k3">/</span> <span class="n">60</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> other_bitmap <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">640</span>, <span class="n">480</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>
<span class="number"> 12</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</span>  <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>  <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>
<span class="number"> 18</span>  <span class="k1">float</span> r <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span>, g <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span>, b <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number"> 19</span>
<span class="number"> 20</span>  <span class="k1">while</span> <span class="k2">(</span><span class="k1">true</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 21</span>
<span class="number"> 22</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev<span class="k2">;</span>
<span class="number"> 23</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>
<span class="number"> 25</span>    <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 26</span>
<span class="number"> 27</span>      <span class="k1">static</span> <span class="k1">bool</span> <a href="http://www.allegro.cc/manual/fade_in"><span class="a">fade_in</span></a> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 28</span>      <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/fade_in"><span class="a">fade_in</span></a><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 29</span>        r <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">005f</span><span class="k2">;</span>
<span class="number"> 30</span>        g <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">005f</span><span class="k2">;</span>
<span class="number"> 31</span>        b <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">005f</span><span class="k2">;</span>
<span class="number"> 32</span>        <a href="http://www.allegro.cc/manual/fade_in"><span class="a">fade_in</span></a> <span class="k3">=</span> <span class="k3">!</span><span class="k2">(</span>r <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">1</span>.<span class="n">0f</span> <span class="k3">|</span><span class="k3">|</span> g <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">1</span>.<span class="n">0f</span> <span class="k3">|</span><span class="k3">|</span> b <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">1</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span>      <span class="k2">}</span>
<span class="number"> 34</span>      <span class="k1">else</span> <span class="k2">{</span>
<span class="number"> 35</span>        r <span class="k3">-</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">005f</span><span class="k2">;</span>
<span class="number"> 36</span>        g <span class="k3">-</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">005f</span><span class="k2">;</span>
<span class="number"> 37</span>        b <span class="k3">-</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">005f</span><span class="k2">;</span>
<span class="number"> 38</span>        <a href="http://www.allegro.cc/manual/fade_in"><span class="a">fade_in</span></a> <span class="k3">=</span> <span class="k3">!</span><span class="k2">(</span>r <span class="k3">&gt;</span> <span class="n">0</span>.<span class="n">0f</span> <span class="k3">|</span><span class="k3">|</span> g <span class="k3">&gt;</span> <span class="n">0</span>.<span class="n">0f</span> <span class="k3">|</span><span class="k3">|</span> b <span class="k3">&gt;</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>      <span class="k2">}</span>
<span class="number"> 40</span>      
<span class="number"> 41</span>      <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>other_bitmap<span class="k2">)</span><span class="k2">;</span> <span class="c">// &lt;-- Problematic!</span>
<span class="number"> 42</span>
<span class="number"> 43</span>      <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb_f"><span class="a">al_map_rgb_f</span></a><span class="k2">(</span>r, g, b<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 44</span>
<span class="number"> 45</span>      <a href="http://www.allegro.cc/manual/al_set_target_backbuffer"><span class="a">al_set_target_backbuffer</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>
<span class="number"> 47</span>      <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>other_bitmap, <span class="n">0</span>.<span class="n">0f</span>, <span class="n">0</span>.<span class="n">0f</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 48</span>
<span class="number"> 49</span>      <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</span>
<span class="number"> 51</span>    <span class="k2">}</span>
<span class="number"> 52</span>
<span class="number"> 53</span>  <span class="k2">}</span>
<span class="number"> 54</span>
<span class="number"> 55</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 56</span>
<span class="number"> 57</span><span class="k2">}</span>
</div></div><p>

As you can see, the screen fades in and out from black-to-white. If I press Ctrl+Alt+Del (which shows the menu with Task Manager, Lock, Switch user, etc.; I don&#39;t know what to call it, honestly) and then return to the game, the animation stops updating, even though the drawing code is still being called. </p><p>If 
</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><a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>other_bitmap<span class="k2">)</span><span class="k2">;</span>
</div></div><p>
is commented out, the problem no longer occurs.</p><p>Another thing that might be worth mentioning is that I was using 5.0.10 prior to updating to 5.20, and this problem didn&#39;t occur.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (xsquid)</author>
		<pubDate>Sun, 31 Jul 2016 00:31:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for the test example, it was very helpful.</p><p>This bug is already fixed on the master branch, and will be in the 5.2.1 release (which is coming soon).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Sun, 31 Jul 2016 01:31:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m glad to hear that it&#39;s already been fixed! I&#39;ll keep working around it for now.</p><p>Thanks a lot for the quick response.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (xsquid)</author>
		<pubDate>Sun, 31 Jul 2016 02:58:16 +0000</pubDate>
	</item>
</rss>
