<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Creating sub-bitmap of locked bitmap</title>
		<link>http://www.allegro.cc/forums/view/616531</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 18 Oct 2016 07:27:27 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m looking to combine two for loops in my code, it would mean creating several sub-bitmaps of a bitmap that is currently locked to read pixels from. I couldn&#39;t tell from the manual if this is error prone/dangerous in any way. Is it safe?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Felix-The-Ghost)</author>
		<pubDate>Sun, 16 Oct 2016 06:46:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It looks safe enough to create a sub bitmap on a locked parent from the function definition. All <span class="source-code"><a href="http://www.allegro.cc/manual/al_create_sub_bitmap"><span class="a">al_create_sub_bitmap</span></a></span> does is allocate a new ALLEGRO_BITMAP and populate it with default values.</p><div class="source-code"><div class="toolbar"><span class="name">bitmap.c</span><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"> 431</span><span class="c">/* Function: al_create_sub_bitmap</span>
<span class="number"> 432</span><span class="c"> */</span>
<span class="number"> 433</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/al_create_sub_bitmap"><span class="a">al_create_sub_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>parent,
<span class="number"> 434</span>   <span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> w, <span class="k1">int</span> h<span class="k2">)</span>
<span class="number"> 435</span><span class="k2">{</span>
<span class="number"> 436</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bitmap<span class="k2">;</span>
<span class="number"> 437</span>
<span class="number"> 438</span>   <span class="k1">if</span> <span class="k2">(</span>parent-&gt;parent<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 439</span>      x <span class="k3">+</span><span class="k3">=</span> parent-&gt;xofs<span class="k2">;</span>
<span class="number"> 440</span>      y <span class="k3">+</span><span class="k3">=</span> parent-&gt;yofs<span class="k2">;</span>
<span class="number"> 441</span>      parent <span class="k3">=</span> parent-&gt;parent<span class="k2">;</span>
<span class="number"> 442</span>   <span class="k2">}</span>
<span class="number"> 443</span>   
<span class="number"> 444</span>   bitmap <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_calloc"><span class="a">al_calloc</span></a><span class="k2">(</span><span class="n">1</span>, <span class="k1">sizeof</span> <span class="k3">*</span>bitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 445</span>   bitmap-&gt;vt <span class="k3">=</span> parent-&gt;vt<span class="k2">;</span>
<span class="number"> 446</span>
<span class="number"> 447</span>   <span class="c">/* Sub-bitmap inherits these from the parent.</span>
<span class="number"> 448</span><span class="c">    * Leave these unchanged so they can be detected if improperly accessed</span>
<span class="number"> 449</span><span class="c">    * directly. */</span>
<span class="number"> 450</span>   bitmap-&gt;_format <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 451</span>   bitmap-&gt;_flags <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 452</span>   bitmap-&gt;_display <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a><span class="k3">*</span><span class="k2">)</span><span class="n">0x1</span><span class="k2">;</span>
<span class="number"> 453</span>
<span class="number"> 454</span>   bitmap-&gt;w <span class="k3">=</span> w<span class="k2">;</span>
<span class="number"> 455</span>   bitmap-&gt;h <span class="k3">=</span> h<span class="k2">;</span>
<span class="number"> 456</span>   bitmap-&gt;locked <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 457</span>   bitmap-&gt;cl <span class="k3">=</span> bitmap-&gt;ct <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 458</span>   bitmap-&gt;cr_excl <span class="k3">=</span> w<span class="k2">;</span>
<span class="number"> 459</span>   bitmap-&gt;cb_excl <span class="k3">=</span> h<span class="k2">;</span>
<span class="number"> 460</span>   <a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>bitmap-&gt;transform<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 461</span>   <a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>bitmap-&gt;inverse_transform<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 462</span>   bitmap-&gt;inverse_transform_dirty <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 463</span>   <a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>bitmap-&gt;proj_transform<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 464</span>   al_orthographic_transform<span class="k2">(</span><span class="k3">&amp;</span>bitmap-&gt;proj_transform, <span class="n">0</span>, <span class="n">0</span>, <span class="k3">-</span><span class="n">1</span>.<span class="n">0</span>, w, h, <span class="n">1</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 465</span>   bitmap-&gt;shader <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 466</span>   bitmap-&gt;parent <span class="k3">=</span> parent<span class="k2">;</span>
<span class="number"> 467</span>   bitmap-&gt;xofs <span class="k3">=</span> x<span class="k2">;</span>
<span class="number"> 468</span>   bitmap-&gt;yofs <span class="k3">=</span> y<span class="k2">;</span>
<span class="number"> 469</span>   bitmap-&gt;memory <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 470</span>
<span class="number"> 471</span>   bitmap-&gt;dtor_item <span class="k3">=</span> _al_register_destructor<span class="k2">(</span>_al_dtor_list, <span class="s">"sub_bitmap"</span>, bitmap,
<span class="number"> 472</span>      <span class="k2">(</span><span class="k1">void</span> <span class="k2">(</span><span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k1">void</span> <span class="k3">*</span><span class="k2">)</span><span class="k2">)</span><a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 473</span>
<span class="number"> 474</span>   <span class="k1">return</span> bitmap<span class="k2">;</span>
<span class="number"> 475</span><span class="k2">}</span>
</div></div><p>

What do you need to do with the sub-bitmaps while the parent is locked? Just create them? That <b>should</b> be safe.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 17 Oct 2016 01:26:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Edgar, my hero!</p><p>Yes I am just creating them, then after all are created I unlock the parent. Nice.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Felix-The-Ghost)</author>
		<pubDate>Tue, 18 Oct 2016 07:27:27 +0000</pubDate>
	</item>
</rss>
