<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Why is this not drawing?</title>
		<link>http://www.allegro.cc/forums/view/611186</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 05 Oct 2012 20:30:51 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello, first time poster here.<br />I&#39;m currently working on a game and I&#39;ve stumpled upon some extremely weird behaviour in my program. Basically what happens is that what is basically two times the same function call (with different parameters) does something only on the second call. I&#39;d like to know in which way these function calls differ and how I can fix this behaviour.<br />Here is the necessary code to understand: 
</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">void</span> State_Mainmenu::Render<span class="k2">(</span><span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>  <span class="k1">if</span><span class="k2">(</span>render<span class="k2">)</span><span class="k2">{</span>
<span class="number">  4</span>    render <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  5</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bg,<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="c">// This does nothing</span>
<span class="number">  6</span>    
<span class="number">  7</span>    
<span class="number">  8</span>    <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> buttons.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>
<span class="number">  9</span>    <span class="k2">{</span>
<span class="number"> 10</span>      buttons.at<span class="k2">(</span>i<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Render<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//This works</span>
<span class="number"> 11</span>    <span class="k2">}</span>  
<span class="number"> 12</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"> 13</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"> 14</span>  <span class="k2">}</span>
<span class="number"> 15</span><span class="k2">}</span>
<span class="number"> 16</span>
<span class="number"> 17</span><span class="k1">void</span> GUI_Button::Render<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 18</span><span class="k2">{</span>
<span class="number"> 19</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>pressed<span class="k2">)</span><span class="k2">{</span><a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>unclickedTexture,x_Pos,y_Pos,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 20</span>  <span class="k1">else</span><span class="k2">{</span><a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>clickedTexture,x_Pos,y_Pos,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 21</span>  <span class="k1">if</span><span class="k2">(</span>text.size<span class="k2">(</span><span class="k2">)</span><span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 22</span>  <span class="k2">{</span><a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>,<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>,x_Pos<span class="k3">+</span>width<span class="k3">/</span><span class="n">2</span>,y_Pos<span class="k3">+</span>height<span class="k3">/</span><span class="n">2</span><span class="k3">-</span><a href="http://www.allegro.cc/manual/al_get_font_line_height"><span class="a">al_get_font_line_height</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">)</span><span class="k3">/</span><span class="n">2</span>,ALLEGRO_ALIGN_CENTRE,text.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 23</span><span class="k2">}</span>
</div></div><p>

Like I said. This is basically two times the same thing (calling al_draw_bitmap), not changing anything in between whatsoever.</p><p>I&#39;d really appreciate it, if someone could help me out on this one. <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (EternalGames)</author>
		<pubDate>Fri, 05 Oct 2012 00:45:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You are sure that the image loaded properly and that it actually has image data saved in it right? Other than that I don&#39;t see anything wrong with this code here, so it might be somewhere else.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (someone972)</author>
		<pubDate>Fri, 05 Oct 2012 04:51:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Make sure all of your calls to al_create_bitmap() and al_load_bitmap() aren&#39;t returning NULL. If they do, then they have failed, likely due to an incorrect filename, invalid bitmap sizes, or other such things.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kris Asick)</author>
		<pubDate>Fri, 05 Oct 2012 09:14:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>1. What they said.<br />2. So when you comment out the button rendering, you see nothing?<br />I could imagine that the blending mode is set incorrectly and the whole screen is covered by the button bitmaps.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (weapon_S)</author>
		<pubDate>Fri, 05 Oct 2012 12:25:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p> 	</p><div class="quote_container"><div class="title"><a href="http://">Kris Asick</a> said:</div><div class="quote"><p>Make sure all of your calls to al_create_bitmap() and al_load_bitmap() aren&#39;t returning NULL. If they do, then they have failed, likely due to an incorrect filename, invalid bitmap sizes, or other such things.
</p></div></div><p>
I did the following: 	
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"Stoffmalerei.png"</span><span class="k2">)</span><span class="k2">)</span>
  <span class="k2">{</span>
    bg <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"Stoffmalerei.png"</span><span class="k2">)</span><span class="k2">;</span>
  <span class="k2">}</span>
  <span class="k1">else</span>
  <span class="k2">{</span>
    <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_current_display"><span class="a">al_get_current_display</span></a><span class="k2">(</span><span class="k2">)</span>,<span class="s">"Error"</span>,<span class="s">"Function"</span>,<span class="s">"al_load_bitmap failed"</span>,<span class="s">"aye"</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
  <span class="k2">}</span>
</pre></div></div><p>
it does not show the message box, so I guess I&#39;m loading it right.</p><div class="quote_container"><div class="title"><a href="http://">weapon_S</a> said:</div><div class="quote"><p>  So when you comment out the button rendering, you see nothing?</p></div></div><p>

Yes, I only see black, when I comment out the button code.:-X
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (EternalGames)</author>
		<pubDate>Fri, 05 Oct 2012 17:28:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That&#39;s a memory leak right there...<br />You should try not to load it twice:
</p><div class="source-code snippet"><div class="inner"><pre>bg <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"Stoffmalerei.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>bg<span class="k2">)</span> <span class="k2">{</span>
    <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_current_display"><span class="a">al_get_current_display</span></a><span class="k2">(</span><span class="k2">)</span>,<span class="s">"Error"</span>,<span class="s">"Function"</span>,<span class="s">"al_load_bitmap failed"</span>,<span class="s">"aye"</span>,<span class="n">0</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 (J-Gamer)</author>
		<pubDate>Fri, 05 Oct 2012 17:40:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Technically you haven&#39;t checked bg yet <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /> And you&#39;re leaking memory <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p><div class="source-code snippet"><div class="inner"><pre>bg <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"Stoffmalerei.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="k1">if</span><span class="k2">(</span><span class="k3">!</span> bg<span class="k2">)</span>
    <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_current_display"><span class="a">al_get_current_display</span></a><span class="k2">(</span><span class="k2">)</span>, <span class="s">"Error"</span>, <span class="s">"Function"</span>, <span class="s">"al_load_bitmap failed"</span>, <span class="s">"aye"</span> ,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
<img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /> Sorry, can&#39;t help you any further.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (weapon_S)</author>
		<pubDate>Fri, 05 Oct 2012 17:40:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well I thought that checking the return value of al_load_bitmap was supposed to work like that, because I can&#39;t do <br /><span class="source-code"> <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>bg <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"Stoffmalerei.png"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">{</span> errorstuff<span class="k2">}</span></span></p><p>Thanks for reminding me of the memory leak, though. <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (EternalGames)</author>
		<pubDate>Fri, 05 Oct 2012 17:55:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes, you can <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /> Add parentheses, if it feels too weird:<br /><span class="source-code"><span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>bg <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"Stoffmalerei.png"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">{</span> errorstuff<span class="k2">}</span></span><br />And yes, it is weird.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (weapon_S)</author>
		<pubDate>Fri, 05 Oct 2012 18:17:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Haha, well I found my mistake and it made me laugh hard. <br />When I did one of the other textures for the game, I accidentally overwrote my Stoffmalerei.png and the new texture was something consisting of black, so I couldn&#39;t see it drawn on the black background.</p><p>I&#39;m facepalming so hard right now. <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (EternalGames)</author>
		<pubDate>Fri, 05 Oct 2012 18:36:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You still need to make sure you&#39;re not leaking memory. When you call al_load_bitmap(), you load a bitmap into video memory. So every single time you call this function, you absolutely MUST place the result into an empty pointer. If you don&#39;t:</p><p>1. The memory will be wasted and future calls to al_load_bitmap() may fail if memory is exhausted.</p><p>2. If the pointer you load to already has a bitmap in it, you&#39;ll lose access to that bitmap, again leaking memory and potentially running out if you keep doing this.</p><p>Remember, a &quot;pointer&quot; simply points to an object in memory, it isn&#39;t itself the actual memory being used. If you forget the contents of a pointer, or fail to store one that&#39;s created, then the memory it points to will be inaccessible by ANYTHING for the duration of your application, and if you do this enough times, you will eventually have no memory left. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kris Asick)</author>
		<pubDate>Fri, 05 Oct 2012 20:30:51 +0000</pubDate>
	</item>
</rss>
