<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Android: Rotation  issues and Soft keys</title>
		<link>http://www.allegro.cc/forums/view/610921</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 31 Aug 2012 17:46:00 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Two questions:</p><p>I am running now on a real Nexus7 rather than an emulator, and I am now seeing two issues I had not yet seen.</p><p>1) How do you work with the softkeys? Can I treat them as keys being pressed, with an event que? I ask because pressing back can lock up the device for a moment, after which I am asked if the program should be shutdown for not responding or not - and if no is pressed, the demo becomes a background behind all the icons.</p><p>2) What ever orientation the device starts in is fine, but after rotating the device the aspect becomes very warped. Rotating the device into the orientation it was when the program started makes everything right again.</p><p>What code or condition checks am I missing? I am running the allegro example. Any ideas?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (alehbeer)</author>
		<pubDate>Thu, 30 Aug 2012 02:05:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>All keys should come through as keyboard events. Some work should probably be done to make sure the keyboard event handling doesn&#39;t lock up the java thread.</p><p>That backgrounding issue has been brought up before. Not sure what is causing that, other than the device supporting multiple GL contexts, and the user thread continuing to run in the background drawing under the main ui.. At least thats my guess.</p><p>I&#39;ll have to do some testing on my Nexus 7.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Thu, 30 Aug 2012 02:35:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I just updated from <s>4.0</s> 4.1 to 4.1.1</p><p>The background bug persists, and can now be repeated via:<br />click back a bunch real fast. select wait. click home.</p><p>The rotation bug seems fixed.</p><p>Let me know if you can replicate either - if so I will add it to the bug tracker.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (alehbeer)</author>
		<pubDate>Thu, 30 Aug 2012 02:48:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ah, you were using 4.0? That isn&#39;t even possible. There was no Android port in 4.0 afaik.</p><p>But please try the latest 4.1 release, and Git if possible. Git especially, that&#39;s probably the most important.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Thu, 30 Aug 2012 03:00:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Isn&#39;t he talking about Android? Android 4.1, Jelly Bean?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AMCerasoli)</author>
		<pubDate>Thu, 30 Aug 2012 03:33:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I meant android 4.1 to 4.1.1
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (alehbeer)</author>
		<pubDate>Thu, 30 Aug 2012 03:48:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>OH. Heh. My bad. What version of Allegro are you trying?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Thu, 30 Aug 2012 05:24:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Allegro 5.1.3
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (alehbeer)</author>
		<pubDate>Thu, 30 Aug 2012 07:28:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Would it be possible to try the version from the git repo? That may have some fixes for what you&#39;re seeing. (I can&#39;t remember for sure)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Thu, 30 Aug 2012 08:21:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You MUST handle ALLEGRO_EVENT_DISPLAY_HALT/RESUME_DRAWING and should handle ALLEGRO_EVENT_DISPLAY_SWITCH_OUT/IN also. Take a look at the Allegro demo for Android to see what you need to do: <a href="http://www.nooskewl.com/content/open-source/">http://www.nooskewl.com/content/open-source/</a>.</p><p>EDIT:</p><p>I&#39;ll try to break it down as best I can remember (in the way I prefer to do it).</p><p>1) When you get a HALT_DRAWING, you should set up a condition variable and start a thread with al_run_detached_thread. The code in this thread is pretty simple:</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">// Some "global" data, or in some way accessible to both threads</span>
<span class="number">  2</span><a href="http://www.allegro.cc/manual/ALLEGRO_COND"><span class="a">ALLEGRO_COND</span></a> <span class="k3">*</span>cond<span class="k2">;</span>
<span class="number">  3</span><a href="http://www.allegro.cc/manual/ALLEGRO_MUTEX"><span class="a">ALLEGRO_MUTEX</span></a> <span class="k3">*</span>mutex<span class="k2">;</span>
<span class="number">  4</span><span class="c">// This is the event queue your display is registered to</span>
<span class="number">  5</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>queue<span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="c">// Here's the thread function</span>
<span class="number">  8</span><span class="k1">void</span> <span class="k3">*</span>thread_proc<span class="k2">(</span><span class="k1">void</span> <span class="k3">*</span>data<span class="k2">)</span>
<span class="number">  9</span><span class="k2">{</span>
<span class="number"> 10</span>   <span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>data<span class="k2">;</span>
<span class="number"> 11</span>
<span class="number"> 12</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"> 13</span>      <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> e<span class="k2">;</span>
<span class="number"> 14</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>queue, <span class="k3">&amp;</span>e<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>      <span class="k1">if</span> <span class="k2">(</span>e.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_RESUME_DRAWING<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 16</span>         <a href="http://www.allegro.cc/manual/al_broadcast_cond"><span class="a">al_broadcast_cond</span></a><span class="k2">(</span>cond<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>         <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 18</span>      <span class="k2">}</span>
<span class="number"> 19</span>   <span class="k2">}</span>
<span class="number"> 20</span>
<span class="number"> 21</span>   <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 22</span><span class="k2">}</span>
<span class="number"> 23</span>
<span class="number"> 24</span><span class="c">// Got HALT_DRAWING here</span>
<span class="number"> 25</span>cond <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_cond"><span class="a">al_create_cond</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>mutex <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_mutex"><span class="a">al_create_mutex</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span><a href="http://www.allegro.cc/manual/al_run_detached_thread"><span class="a">al_run_detached_thread</span></a><span class="k2">(</span>...<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>al_acknowledge_drawing_halt<span class="k2">(</span>...<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span><a href="http://www.allegro.cc/manual/al_wait_cond"><span class="a">al_wait_cond</span></a><span class="k2">(</span>cond, mutex<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>al_acknowledge_drawing_resume<span class="k2">(</span>...<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span><a href="http://www.allegro.cc/manual/al_destroy_cond"><span class="a">al_destroy_cond</span></a><span class="k2">(</span>cond<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span><a href="http://www.allegro.cc/manual/al_destroy_mutex"><span class="a">al_destroy_mutex</span></a><span class="k2">(</span>mutex<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span><span class="c">// ... Back to your regularly scheduled programming</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Thu, 30 Aug 2012 08:33:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m wondering why that is required. Can&#39;t the main thread just not run things when it knows it can&#39;t draw?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Thu, 30 Aug 2012 09:02:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes, but then you mess up your main loop. Like I said, way I prefer to do it.</p><p>EDIT:</p><p>And it&#39;s impossible to wait on a condition in the main thread, because you have to wait on events, so you&#39;ll be spinning cycles needlessly.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Thu, 30 Aug 2012 09:05:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ah. I personally wouldn&#39;t find it would mess up the main loop. I&#39;d probably just stop my timer and call it a day. That way no updates at all should happen till the resume drawing event, where you&#39;d start the timer back up.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Thu, 30 Aug 2012 09:07:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can&#39;t. Read my edit. Well you can but it&#39;s better my way.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Thu, 30 Aug 2012 09:08:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I wouldn&#39;t wait on a condition. Just wait for the resume event to come back, and set things back up. Basically with the timer[s] stopped, no more events should be able to come back, other than the resume drawing event. so you wait on that, rather than a condition.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Thu, 30 Aug 2012 09:10:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Whatever. Won&#39;t argue with you. You&#39;re &quot;The Android Guy&quot; after all. <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=";D" border="0" />.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Thu, 30 Aug 2012 09:11:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/610921/964415#target">Trent Gamblin</a> said:</div><div class="quote"><p>Whatever. Won&#39;t argue with you. You&#39;re &quot;The Android Guy&quot; after all. .</p></div></div><p><img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><p>I have to say you&#39;ve done at least as much work, so you&#39;re like a partner in crime.</p><p>I could be missing something. Some quirk of android or allegro&#39;s interaction with it that needs something that fancy.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Thu, 30 Aug 2012 09:13:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am a little confused how you would add that code into this. I tried, but now I can&#39;t get graphics and it doesn&#39;t open immediately like it used to - which I believe is possibly caused by my new and not quite clear understanding of ALLEGRO_EVENTS. Here is the example main.c from the allegro5 git.</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="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">   4</span><span class="p">#include &lt;allegro5/allegro_android.h&gt; /* al_android_set_apk_file_interface */</span>
<span class="number">   5</span>
<span class="number">   6</span>ALLEGRO_DEBUG_CHANNEL<span class="k2">(</span><span class="s">"main"</span><span class="k2">)</span>
<span class="number">   7</span>
<span class="number">   8</span><span class="p">#define MAX_TOUCH 10</span>
<span class="number">   9</span>
<span class="number">  10</span><span class="k1">struct</span> touch <span class="k2">{</span>
<span class="number">  11</span>   <span class="k1">bool</span> down<span class="k2">;</span>
<span class="number">  12</span>   <span class="k1">double</span> x, y<span class="k2">;</span>
<span class="number">  13</span><span class="k2">}</span> touch<span class="k2">[</span>MAX_TOUCH<span class="k2">]</span><span class="k2">;</span>
<span class="number">  14</span>
<span class="number">  15</span><span class="c">/* debugging */</span>
<span class="number">  16</span><span class="p">#define print_standard_path(std)                           \</span>
<span class="number">  17</span><span class="p">   do {                                                    \ </span>
<span class="number">  18</span><span class="p">      ALLEGRO_PATH *path = al_get_standard_path(std);      \ </span>
<span class="number">  19</span><span class="p">      ALLEGRO_DEBUG(#std ": %s", al_path_cstr(path, '/')); \ </span>
<span class="number">  20</span><span class="p">   } while (0) </span>
<span class="number">  21</span>
<span class="number">  22</span><span class="k1">static</span> <span class="k1">void</span> print_standard_paths<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  23</span><span class="k2">{</span>
<span class="number">  24</span>   print_standard_path<span class="k2">(</span>ALLEGRO_RESOURCES_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span>   print_standard_path<span class="k2">(</span>ALLEGRO_TEMP_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span>   print_standard_path<span class="k2">(</span>ALLEGRO_USER_DATA_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</span>   print_standard_path<span class="k2">(</span>ALLEGRO_USER_HOME_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  28</span>   print_standard_path<span class="k2">(</span>ALLEGRO_USER_SETTINGS_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  29</span>   print_standard_path<span class="k2">(</span>ALLEGRO_USER_DOCUMENTS_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  30</span>   print_standard_path<span class="k2">(</span>ALLEGRO_EXENAME_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  31</span><span class="k2">}</span>
<span class="number">  32</span>
<span class="number">  33</span><span class="k1">static</span> <span class="k1">void</span> set_transform<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>dpy<span class="k2">)</span>
<span class="number">  34</span><span class="k2">{</span>
<span class="number">  35</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> t<span class="k2">;</span>
<span class="number">  36</span>   <span class="k1">int</span> w <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_display_width"><span class="a">al_get_display_width</span></a><span class="k2">(</span>dpy<span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span>   <span class="k1">int</span> h <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_display_height"><span class="a">al_get_display_height</span></a><span class="k2">(</span>dpy<span class="k2">)</span><span class="k2">;</span>
<span class="number">  38</span>
<span class="number">  39</span>   <span class="c">// XXX we shouldn't need this in user code</span>
<span class="number">  40</span>   <span class="c">// glViewport(0, 0, w, h);</span>
<span class="number">  41</span>
<span class="number">  42</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>t<span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>   al_ortho_transform<span class="k2">(</span><span class="k3">&amp;</span>t, <span class="n">0</span>, w, h, <span class="n">0</span>, <span class="k3">-</span><span class="n">1</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  44</span>   al_set_projection_transform<span class="k2">(</span>dpy, <span class="k3">&amp;</span>t<span class="k2">)</span><span class="k2">;</span>
<span class="number">  45</span><span class="k2">}</span>
<span class="number">  46</span>
<span class="number">  47</span><span class="k1">static</span> <span class="k1">void</span> draw_touches<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  48</span><span class="k2">{</span>
<span class="number">  49</span>   <span class="k1">int</span> i<span class="k2">;</span>
<span class="number">  50</span>
<span class="number">  51</span>   <span class="k1">for</span> <span class="k2">(</span>i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> MAX_TOUCH<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  52</span>      <span class="k1">if</span> <span class="k2">(</span>touch<span class="k2">[</span>i<span class="k2">]</span>.down<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  53</span>         <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span>
<span class="number">  54</span>            touch<span class="k2">[</span>i<span class="k2">]</span>.x-40, touch<span class="k2">[</span>i<span class="k2">]</span>.y-40,
<span class="number">  55</span>            touch<span class="k2">[</span>i<span class="k2">]</span>.x<span class="k3">+</span><span class="n">40</span>, touch<span class="k2">[</span>i<span class="k2">]</span>.y<span class="k3">+</span><span class="n">40</span>,
<span class="number">  56</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">100</span><span class="k3">+</span>i<span class="k3">*</span><span class="n">20</span>, <span class="n">40</span><span class="k3">+</span>i<span class="k3">*</span><span class="n">20</span>, <span class="n">40</span><span class="k3">+</span>i<span class="k3">*</span><span class="n">20</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>      <span class="k2">}</span>
<span class="number">  58</span>   <span class="k2">}</span>
<span class="number">  59</span><span class="k2">}</span>
<span class="number">  60</span>
<span class="number">  61</span><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>
<span class="number">  62</span><span class="k2">{</span>
<span class="number">  63</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>dpy<span class="k2">;</span>
<span class="number">  64</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>queue<span class="k2">;</span>
<span class="number">  65</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> event<span class="k2">;</span>
<span class="number">  66</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer<span class="k2">;</span>
<span class="number">  67</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>image<span class="k2">;</span>
<span class="number">  68</span>
<span class="number">  69</span>   <span class="k2">(</span><span class="k1">void</span><span class="k2">)</span> argc<span class="k2">;</span>
<span class="number">  70</span>   <span class="k2">(</span><span class="k1">void</span><span class="k2">)</span> argv<span class="k2">;</span>
<span class="number">  71</span>
<span class="number">  72</span>   ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"init allegro!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</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="k2">{</span>
<span class="number">  74</span>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  75</span>   <span class="k2">}</span>
<span class="number">  76</span>
<span class="number">  77</span>   ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"init primitives"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  78</span>   <a href="http://www.allegro.cc/manual/al_init_primitives_addon"><span class="a">al_init_primitives_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>
<span class="number">  80</span>   ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"init image addon"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  81</span>   <a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  82</span>
<span class="number">  83</span>   ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"init touch input"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  84</span>   al_install_touch_input<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  85</span>
<span class="number">  86</span>   ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"init keyboard"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  87</span>   <a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>
<span class="number">  89</span>   ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"creating display"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  90</span>   dpy <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">800</span>, <span class="n">480</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>dpy<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  92</span>      ALLEGRO_ERROR<span class="k2">(</span><span class="s">"failed to create display!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  93</span>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  94</span>   <span class="k2">}</span>
<span class="number">  95</span>
<span class="number">  96</span>   print_standard_paths<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>
<span class="number">  98</span>   <span class="c">/* This is loaded from assets in the apk. */</span>
<span class="number">  99</span>   al_android_set_apk_file_interface<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>   image <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">"alexlogo.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>image<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 102</span>      ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"failed to load alexlogo.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 103</span>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 104</span>   <span class="k2">}</span>
<span class="number"> 105</span>   <a href="http://www.allegro.cc/manual/al_set_standard_file_interface"><span class="a">al_set_standard_file_interface</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 106</span>
<span class="number"> 107</span>   <a href="http://www.allegro.cc/manual/al_convert_mask_to_alpha"><span class="a">al_convert_mask_to_alpha</span></a><span class="k2">(</span>image, <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">255</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 108</span>
<span class="number"> 109</span>   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"> 110</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>queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>dpy<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 111</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>queue, al_get_touch_input_event_source<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 112</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>queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 113</span>
<span class="number"> 114</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="k3">/</span><span class="n">60</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</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>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"> 116</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"> 117</span>
<span class="number"> 118</span>   <span class="k1">bool</span> draw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 119</span>   <span class="k1">bool</span> running <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 120</span>   <span class="k1">bool</span> paused <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 121</span>   <span class="k1">int</span> count <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 122</span>
<span class="number"> 123</span>   <span class="k1">while</span> <span class="k2">(</span>running<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 124</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>queue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 125</span>
<span class="number"> 126</span>      <span class="k1">switch</span> <span class="k2">(</span>event.type<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 127</span>         <span class="k1">case</span> ALLEGRO_EVENT_TOUCH_BEGIN:
<span class="number"> 128</span>            <span class="c">//ALLEGRO_DEBUG("touch %i begin", event.touch.id);</span>
<span class="number"> 129</span>            touch<span class="k2">[</span>event.touch.id<span class="k2">]</span>.down <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 130</span>            touch<span class="k2">[</span>event.touch.id<span class="k2">]</span>.x <span class="k3">=</span> event.touch.x<span class="k2">;</span>
<span class="number"> 131</span>            touch<span class="k2">[</span>event.touch.id<span class="k2">]</span>.y <span class="k3">=</span> event.touch.y<span class="k2">;</span>
<span class="number"> 132</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 133</span>
<span class="number"> 134</span>         <span class="k1">case</span> ALLEGRO_EVENT_TOUCH_END:
<span class="number"> 135</span>            <span class="c">//ALLEGRO_DEBUG("touch %i end", event.touch.id);</span>
<span class="number"> 136</span>            touch<span class="k2">[</span>event.touch.id<span class="k2">]</span>.down <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 137</span>            touch<span class="k2">[</span>event.touch.id<span class="k2">]</span>.x <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 138</span>            touch<span class="k2">[</span>event.touch.id<span class="k2">]</span>.y <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 139</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 140</span>
<span class="number"> 141</span>         <span class="k1">case</span> ALLEGRO_EVENT_TOUCH_MOVE:
<span class="number"> 142</span>            <span class="c">//ALLEGRO_DEBUG("touch %i move: %fx%f", event.touch.id, event.touch.x, event.touch.y);</span>
<span class="number"> 143</span>            touch<span class="k2">[</span>event.touch.id<span class="k2">]</span>.x <span class="k3">=</span> event.touch.x<span class="k2">;</span>
<span class="number"> 144</span>            touch<span class="k2">[</span>event.touch.id<span class="k2">]</span>.y <span class="k3">=</span> event.touch.y<span class="k2">;</span>
<span class="number"> 145</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 146</span>
<span class="number"> 147</span>         <span class="k1">case</span> ALLEGRO_EVENT_TOUCH_CANCEL:
<span class="number"> 148</span>            <span class="c">//ALLEGRO_DEBUG("touch %i canceled", event.touch.id);</span>
<span class="number"> 149</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 150</span>
<span class="number"> 151</span>         <span class="k1">case</span> ALLEGRO_EVENT_KEY_UP:
<span class="number"> 152</span>            <span class="k1">if</span> <span class="k2">(</span>event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_BACK<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 153</span>               ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"back key pressed, exit!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 154</span>               running <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 155</span>            <span class="k2">}</span>
<span class="number"> 156</span>            <span class="k1">else</span> <span class="k2">{</span>
<span class="number"> 157</span>               ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"%i key pressed"</span>, event.keyboard.keycode<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 158</span>            <span class="k2">}</span>
<span class="number"> 159</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 160</span>
<span class="number"> 161</span>         <span class="k1">case</span> ALLEGRO_EVENT_TIMER:
<span class="number"> 162</span>            draw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 163</span>            <span class="k1">if</span> <span class="k2">(</span>count <span class="k3">=</span><span class="k3">=</span> <span class="n">60</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 164</span>               ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"tick"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 165</span>               count <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 166</span>            <span class="k2">}</span>
<span class="number"> 167</span>            count<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 168</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 169</span>
<span class="number"> 170</span>         <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_CLOSE:
<span class="number"> 171</span>            ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"display close"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 172</span>            running <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 173</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 174</span>
<span class="number"> 175</span>         <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_HALT_DRAWING:
<span class="number"> 176</span>            ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"halt drawing"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 177</span>            <span class="c">// Stop the timer so we don't run at all while our display isn't</span>
<span class="number"> 178</span>            <span class="c">// active.</span>
<span class="number"> 179</span>            <a href="http://www.allegro.cc/manual/al_stop_timer"><span class="a">al_stop_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 180</span>            <span class="c">//al_set_target_backbuffer(0);</span>
<span class="number"> 181</span>            ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"after set target"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 182</span>            paused <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 183</span>            draw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 184</span>            al_acknowledge_drawing_halt<span class="k2">(</span>dpy<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 185</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 186</span>
<span class="number"> 187</span>         <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_RESUME_DRAWING:
<span class="number"> 188</span>            ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"resume drawing"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 189</span>
<span class="number"> 190</span>            al_acknowledge_drawing_resume<span class="k2">(</span>dpy, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 191</span>            ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"done waiting for surface recreated"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 192</span>
<span class="number"> 193</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"> 194</span>            <span class="c">//al_set_target_backbuffer(dpy);</span>
<span class="number"> 195</span>            <span class="c">//_al_android_setup_opengl_view(dpy);</span>
<span class="number"> 196</span>            paused <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 197</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 198</span>
<span class="number"> 199</span>         <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_RESIZE:
<span class="number"> 200</span>            ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"display resize"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 201</span>            <a href="http://www.allegro.cc/manual/al_acknowledge_resize"><span class="a">al_acknowledge_resize</span></a><span class="k2">(</span>dpy<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 202</span>            ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"done resize"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 203</span>            set_transform<span class="k2">(</span>dpy<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 204</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 205</span>
<span class="number"> 206</span>         <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_ORIENTATION:
<span class="number"> 207</span>            set_transform<span class="k2">(</span>dpy<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 208</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 209</span>      <span class="k2">}</span>
<span class="number"> 210</span>
<span class="number"> 211</span>      <span class="k1">if</span> <span class="k2">(</span>draw <span class="k3">&amp;</span><span class="k3">&amp;</span> al_event_queue_is_empty<span class="k2">(</span>queue<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 212</span>         draw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 213</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">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 214</span>         <span class="k1">if</span> <span class="k2">(</span>image<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 215</span>            <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>image,
<span class="number"> 216</span>               <a href="http://www.allegro.cc/manual/al_get_display_width"><span class="a">al_get_display_width</span></a><span class="k2">(</span>dpy<span class="k2">)</span><span class="k3">/</span><span class="n">2</span> <span class="k3">-</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_width"><span class="a">al_get_bitmap_width</span></a><span class="k2">(</span>image<span class="k2">)</span><span class="k3">/</span><span class="n">2</span>,
<span class="number"> 217</span>               <a href="http://www.allegro.cc/manual/al_get_display_height"><span class="a">al_get_display_height</span></a><span class="k2">(</span>dpy<span class="k2">)</span><span class="k3">/</span><span class="n">2</span> <span class="k3">-</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_height"><span class="a">al_get_bitmap_height</span></a><span class="k2">(</span>image<span class="k2">)</span><span class="k3">/</span><span class="n">2</span>,
<span class="number"> 218</span>               <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 219</span>         <span class="k2">}</span>
<span class="number"> 220</span>         draw_touches<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 221</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"> 222</span>      <span class="k2">}</span>
<span class="number"> 223</span>   <span class="k2">}</span>
<span class="number"> 224</span>
<span class="number"> 225</span>   ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"done"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 226</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 227</span><span class="k2">}</span>
<span class="number"> 228</span>
<span class="number"> 229</span><span class="c">/* vim: set sts=3 sw=3 et: */</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (alehbeer)</author>
		<pubDate>Fri, 31 Aug 2012 17:46:00 +0000</pubDate>
	</item>
</rss>
