<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Cannot lock target bitmap</title>
		<link>http://www.allegro.cc/forums/view/611379</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 04 Nov 2012 21:43:45 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello I am trying to read pixels from the target bitmap (al_get_target_bitmap), by locking it.</p><p>Unfortunately locking always fails. So I tried cloning the target bitmap and then locking the clone, this also fails <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" /></p><p>I need to read the target bitmap before saving it to a file, is there any other way I can do this?</p><p><b>SOLVED - SEE POST FOR <a href="http://www.allegro.cc/forums/thread/611379/969536#target">SOLUTION</a></b>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (damianday)</author>
		<pubDate>Sun, 04 Nov 2012 20:09:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Post the code.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Sun, 04 Nov 2012 20:36:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><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>procedure TGame.TakeScreenShot<span class="k2">;</span>
<span class="number">  2</span>var
<span class="number">  3</span>  i, checksum: integer<span class="k2">;</span>
<span class="number">  4</span>  flname: string<span class="k2">;</span>
<span class="number">  5</span>  zcopy: PAnsiChar<span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span>  bmp: PAllegroBitmap<span class="k2">;</span>
<span class="number">  8</span>  format: <a href="http://www.allegro.cc/manual/ALLEGRO_PIXEL_FORMAT"><span class="a">ALLEGRO_PIXEL_FORMAT</span></a><span class="k2">;</span>
<span class="number">  9</span>  lr: PAllegroLockedRegion<span class="k2">;</span>
<span class="number"> 10</span>begin
<span class="number"> 11</span>  bmp <span class="k2">:</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_target_bitmap"><span class="a">al_get_target_bitmap</span></a><span class="k2">;</span>
<span class="number"> 12</span>  <span class="k1">if</span> bmp <span class="k3">=</span> nil then Exit<span class="k2">;</span>
<span class="number"> 13</span>  format <span class="k2">:</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_format"><span class="a">al_get_bitmap_format</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</span>  flname <span class="k2">:</span><span class="k3">=</span> <span class="s">'Screenshot.bmp'</span><span class="k2">;</span>
<span class="number"> 16</span>  zcopy <span class="k2">:</span><span class="k3">=</span> PAnsiChar<span class="k2">(</span>AnsiString<span class="k2">(</span>flname<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>
<span class="number"> 18</span>  checksum <span class="k2">:</span><span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 19</span>  <span class="k1">try</span>
<span class="number"> 20</span>    lr <span class="k2">:</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_lock_bitmap"><span class="a">al_lock_bitmap</span></a><span class="k2">(</span>bmp, format, ALLEGRO_LOCK_READONLY<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>    <span class="k1">if</span> lr <span class="k3">=</span> nil then Exit<span class="k2">;</span>
<span class="number"> 22</span>
<span class="number"> 23</span>    <span class="c">// Note: Never reach this point lr is always nil..</span>
<span class="number"> 24</span>    <span class="k1">for</span> i <span class="k2">:</span><span class="k3">=</span> <span class="k2">(</span>SCREENHEIGHT <span class="k3">-</span> <span class="n">200</span><span class="k2">)</span> to SCREENHEIGHT <span class="k3">-</span> <span class="n">1</span> <span class="k1">do</span> begin
<span class="number"> 25</span>      <span class="c">// TODO: calculate checksum with lr.data</span>
<span class="number"> 26</span>       
<span class="number"> 27</span>    end<span class="k2">;</span>
<span class="number"> 28</span>  finally
<span class="number"> 29</span>    <a href="http://www.allegro.cc/manual/al_unlock_bitmap"><span class="a">al_unlock_bitmap</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>  end<span class="k2">;</span>
<span class="number"> 31</span>
<span class="number"> 32</span>  <a href="http://www.allegro.cc/manual/al_save_bitmap"><span class="a">al_save_bitmap</span></a><span class="k2">(</span>zcopy, bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span>end<span class="k2">;</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (damianday)</author>
		<pubDate>Sun, 04 Nov 2012 20:47:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Can you lock other bitmaps?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Sun, 04 Nov 2012 20:51:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes I&#39;ve just tested and there is no problems with<br />locking any bitmaps.</p><p>On a side note I&#39;m using Allegro 5.0.7 until 5.1 is stable.</p><p>Curiously this case works fine in a simple test project, but not in my main, I think it could be a bug in my code <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" /> somewhere..</p><p>Ok I&#39;ve tracked it down to:
</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_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_DISPLAY_OPTIONS.ALLEGRO_SAMPLE_BUFFERS, <span class="n">1</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 2</span><a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_DISPLAY_OPTIONS.ALLEGRO_SAMPLES, <span class="n">8</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
</div></div><p>
Commenting these lines out makes it go away <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (damianday)</author>
		<pubDate>Sun, 04 Nov 2012 21:00:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Intersting to know. Are you using DirectX? I don&#39;t think multi-sampling should prevent reading the backbuffer, in general.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Sun, 04 Nov 2012 21:21:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m just using vanilla Allegro code on Windows 7 X64,<br />I assume by default it uses OpenGL.</p><p>It seems the code below creates the bug in question.
</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_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_DISPLAY_OPTIONS.ALLEGRO_SAMPLE_BUFFERS, <span class="n">1</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 2</span>  <a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_DISPLAY_OPTIONS.ALLEGRO_SAMPLES, <span class="n">8</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (damianday)</author>
		<pubDate>Sun, 04 Nov 2012 21:24:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Allegro uses DirectX by default on Windows.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Sun, 04 Nov 2012 21:40:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Is there a way to override this behaviour and make it use opengl?<br />nvm found it al_set_new_display_flags(ALLEGRO_OPENGL);
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (damianday)</author>
		<pubDate>Sun, 04 Nov 2012 21:43:45 +0000</pubDate>
	</item>
</rss>
