<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Having Trouble with exit(1) - Stalling Program</title>
		<link>http://www.allegro.cc/forums/view/618781</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 13 Feb 2023 22:50:04 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am still working on the Vivace tutorial.  I&#39;m working with sound now. Due to an oversight on my part I didn&#39;t catch the file downloaded didn&#39;t have the same name as the code.  The program would drop into a &quot;must_init&quot; function design to cut down on repetitive coding. The program wouldn&#39;t print via the printf command so I didn&#39;t realize the program was crashing within this function.  The Include section included stdio.h but I also included cstdio.  It solved the print problem but not the crash/hang. <br />It appears the exit(1) command is where the program is stalling.  I have to close the program within the IDE to get it to clear out. There is no window or console that pops up.  This also made it a pain to run down.  </p><p>Having said all of that, my question is, why would exit(1) stall? Is there a better command?  I&#39;m compiling with g++. </p><p>Reading over the code, could the problem with the function being void, yet exit appears to be trying to return something?</p><p>If you are interested here are the snippets of code involved 
</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="number">  2</span><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a><span class="k3">*</span> elephant <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"elephant.wav"</span><span class="k2">)</span><span class="k2">;</span><span class="c">// file was actually audio_elephant.wav</span>
<span class="number">  3</span>must_init<span class="k2">(</span>elephant, <span class="s">"elephant"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span>
<span class="number">  5</span><span class="k1">void</span> must_init<span class="k2">(</span><span class="k1">bool</span> test, <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>description<span class="k2">)</span>
<span class="number">  6</span><span class="k2">{</span>
<span class="number">  7</span>  <span class="k1">if</span><span class="k2">(</span>test<span class="k2">)</span> <span class="k1">return</span><span class="k2">;</span>
<span class="number">  8</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"couldn't initialize %s\n"</span>, description<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// after including cstdio this is where it's stalling. It's not making it out of the function. </span>
<span class="number"> 10</span><span class="k2">}</span>
</div></div><p>

Thanks
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Fri, 03 Feb 2023 23:14:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If not too big, post the entire file. Got to be something else. Nothing looks wrong with function. Except, I&#39;d make it cleaner. </p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> must_init<span class="k2">(</span><span class="k1">bool</span> test, <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>description<span class="k2">)</span>
<span class="k2">{</span>
  <span class="c">//if(test) return;</span>
  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>test<span class="k2">)</span>
  <span class="k2">{</span>
    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"couldn't initialize %s\n"</span>, description<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// after including cstdio this is where it's stalling. It's not making it out of the function. </span>
  <span class="k2">}</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Sat, 04 Feb 2023 00:20:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here is the code.  Keep in mind<br />1- The name of the sound file is still wrong, for the sake of the failure<br />2- It&#39;s a little patch work because we started with a working program then was asked to replace sections as the lessons progressed. <br />3- I added iostream so I could use std::cout.  I haven&#39;t found a good &quot;step&quot; IDE since MSQuick C.  So I use std::cout to see if a program is making it to a given point or what variable values are at that point.<br />4- allcolor_A5.h is my own file for colors obliviously. This way I don&#39;t&#39; have to al_map_rgb(0,255,0), I can just use BR_GREEN.</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="number">   2</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;stdlib.h&gt;</span>
<span class="number">   4</span><span class="p">#include &lt;allegro5/allegro5.h&gt;</span>
<span class="number">   5</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">   7</span><span class="p">#include &lt;allegro5/allegro_audio.h&gt;</span>
<span class="number">   8</span><span class="p">#include &lt;allegro5/allegro_acodec.h&gt;</span>
<span class="number">   9</span><span class="p">#include &lt;allcolor_A5.h&gt;</span>
<span class="number">  10</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  11</span><span class="p">#include &lt;cstdio&gt;</span>
<span class="number">  12</span>
<span class="number">  13</span><span class="p">#define KEY_SEEN     1</span>
<span class="number">  14</span><span class="p">#define KEY_RELEASED 2</span>
<span class="number">  15</span>
<span class="number">  16</span><span class="k1">void</span> must_init<span class="k2">(</span><span class="k1">bool</span> test, <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>description<span class="k2">)</span>
<span class="number">  17</span><span class="k2">{</span>
<span class="number">  18</span>  <span class="k1">if</span><span class="k2">(</span>test<span class="k2">)</span> <span class="k1">return</span><span class="k2">;</span>
<span class="number">  19</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"couldn't initialize %s\n"</span>, description<span class="k2">)</span><span class="k2">;</span>
<span class="number">  20</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  21</span><span class="k2">}</span>
<span class="number">  22</span>
<span class="number">  23</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  24</span><span class="k2">{</span>
<span class="number">  25</span>    must_init<span class="k2">(</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="s">"allegro"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span>    must_init<span class="k2">(</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="s">"keyboard"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</span>    must_init<span class="k2">(</span><a href="http://www.allegro.cc/manual/al_install_mouse"><span class="a">al_install_mouse</span></a><span class="k2">(</span><span class="k2">)</span>, <span class="s">"mouse"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  28</span>    must_init<span class="k2">(</span><a href="http://www.allegro.cc/manual/al_install_audio"><span class="a">al_install_audio</span></a><span class="k2">(</span><span class="k2">)</span>, <span class="s">"audio"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  29</span>    must_init<span class="k2">(</span><a href="http://www.allegro.cc/manual/al_init_acodec_addon"><span class="a">al_init_acodec_addon</span></a><span class="k2">(</span><span class="k2">)</span>, <span class="s">"audio codecs"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  30</span>    must_init<span class="k2">(</span><a href="http://www.allegro.cc/manual/al_reserve_samples"><span class="a">al_reserve_samples</span></a><span class="k2">(</span><span class="n">16</span><span class="k2">)</span>, <span class="s">"reserve samples"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  31</span>
<span class="number">  32</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a><span class="k3">*</span> elephant <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"elephant.wav"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  33</span>    must_init<span class="k2">(</span>elephant, <span class="s">"elephant"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  34</span>
<span class="number">  35</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">0</span> <span class="k3">/</span> <span class="n">30</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span>    must_init<span class="k2">(</span>timer, <span class="s">"timer"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span>
<span class="number">  38</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="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">  39</span>    must_init<span class="k2">(</span>queue, <span class="s">"queue"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span>
<span class="number">  41</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_SAMPLE_BUFFERS, <span class="n">1</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</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_SAMPLES, <span class="n">8</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>    <a href="http://www.allegro.cc/manual/al_set_new_bitmap_flags"><span class="a">al_set_new_bitmap_flags</span></a><span class="k2">(</span>ALLEGRO_MIN_LINEAR <span class="k3">|</span> ALLEGRO_MAG_LINEAR<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/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a><span class="k3">*</span> disp <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">  46</span>    must_init<span class="k2">(</span>disp, <span class="s">"display"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  47</span>
<span class="number">  48</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a><span class="k3">*</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k3">=</span> al_create_builtin_font<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  49</span>    must_init<span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <span class="s">"font"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  50</span>
<span class="number">  51</span>    must_init<span class="k2">(</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="s">"primitives"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  52</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">  53</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>disp<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  54</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">  55</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_mouse_event_source"><span class="a">al_get_mouse_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</span>
<span class="number">  57</span>    <span class="k1">bool</span> done <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  58</span>    <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  59</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">  60</span>
<span class="number">  61</span>    <span class="k1">float</span> x, y<span class="k2">;</span>
<span class="number">  62</span>        x <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span>
<span class="number">  63</span>        y <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span>
<span class="number">  64</span>    <span class="k1">float</span> dx, dy<span class="k2">;</span>
<span class="number">  65</span>       dx <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  66</span>       dy <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  67</span>    <span class="k1">unsigned</span> <span class="k1">char</span> <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_MAX<span class="k2">]</span><span class="k2">;</span>
<span class="number">  68</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_569.html" target="_blank">memset</a><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a>, <span class="n">0</span>, <span class="k1">sizeof</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  69</span>
<span class="number">  70</span>    <a href="http://www.allegro.cc/manual/al_grab_mouse"><span class="a">al_grab_mouse</span></a><span class="k2">(</span>disp<span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>    <a href="http://www.allegro.cc/manual/al_hide_mouse_cursor"><span class="a">al_hide_mouse_cursor</span></a><span class="k2">(</span>disp<span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</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">  73</span>
<span class="number">  74</span>
<span class="number">  75</span>    <span class="c">//   ALLEGRO_KEYBOARD_STATE ks;</span>
<span class="number">  76</span>    <span class="k1">while</span><span class="k2">(</span><span class="n">1</span><span class="k2">)</span>
<span class="number">  77</span>    <span class="k2">{</span>
<span class="number">  78</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">  79</span>
<span class="number">  80</span>   <span class="c">/*     switch(event.type)</span>
<span class="number">  81</span><span class="c">        {</span>
<span class="number">  82</span><span class="c">            case ALLEGRO_EVENT_TIMER:</span>
<span class="number">  83</span><span class="c">                if(key[ALLEGRO_KEY_UP])</span>
<span class="number">  84</span><span class="c">                    y-=2;</span>
<span class="number">  85</span><span class="c">                if(key[ALLEGRO_KEY_DOWN])</span>
<span class="number">  86</span><span class="c">                    y+=2;</span>
<span class="number">  87</span><span class="c">                if(key[ALLEGRO_KEY_LEFT])</span>
<span class="number">  88</span><span class="c">                    x-=2;</span>
<span class="number">  89</span><span class="c">                if(key[ALLEGRO_KEY_RIGHT])</span>
<span class="number">  90</span><span class="c">                    x+=2;</span>
<span class="number">  91</span><span class="c"></span>
<span class="number">  92</span><span class="c">                if(key[ALLEGRO_KEY_ESCAPE])</span>
<span class="number">  93</span><span class="c">                    done = true;</span>
<span class="number">  94</span><span class="c"></span>
<span class="number">  95</span><span class="c"></span>
<span class="number">  96</span><span class="c">                for(int i = 0; i &lt; ALLEGRO_KEY_MAX; i++)</span>
<span class="number">  97</span><span class="c">                    key[i] &amp;= KEY_SEEN;</span>
<span class="number">  98</span><span class="c"></span>
<span class="number">  99</span><span class="c">                redraw = true;</span>
<span class="number"> 100</span><span class="c">                break;</span>
<span class="number"> 101</span><span class="c"></span>
<span class="number"> 102</span><span class="c">            case ALLEGRO_EVENT_KEY_DOWN:</span>
<span class="number"> 103</span><span class="c">                key[event.keyboard.keycode] = KEY_SEEN | KEY_RELEASED;</span>
<span class="number"> 104</span><span class="c">                break;</span>
<span class="number"> 105</span><span class="c">            case ALLEGRO_EVENT_KEY_UP:</span>
<span class="number"> 106</span><span class="c">                key[event.keyboard.keycode] &amp;= KEY_RELEASED;</span>
<span class="number"> 107</span><span class="c">                break;</span>
<span class="number"> 108</span><span class="c"></span>
<span class="number"> 109</span><span class="c">            case ALLEGRO_EVENT_DISPLAY_CLOSE:</span>
<span class="number"> 110</span><span class="c">                done = true;</span>
<span class="number"> 111</span><span class="c">                break;</span>
<span class="number"> 112</span><span class="c">        }*/</span>
<span class="number"> 113</span>        <span class="k1">switch</span><span class="k2">(</span>event.type<span class="k2">)</span>
<span class="number"> 114</span>        <span class="k2">{</span>
<span class="number"> 115</span>            <span class="k1">case</span> ALLEGRO_EVENT_TIMER:
<span class="number"> 116</span>                <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_ESCAPE<span class="k2">]</span><span class="k2">)</span>
<span class="number"> 117</span>                    done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 118</span>
<span class="number"> 119</span>                x <span class="k3">+</span><span class="k3">=</span> dx<span class="k2">;</span>
<span class="number"> 120</span>                y <span class="k3">+</span><span class="k3">=</span> dy<span class="k2">;</span>
<span class="number"> 121</span>
<span class="number"> 122</span>                <span class="k1">if</span><span class="k2">(</span>x <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 123</span>                <span class="k2">{</span>
<span class="number"> 124</span>                    x <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 125</span>                    dx <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 126</span>                <span class="k2">}</span>
<span class="number"> 127</span>                <span class="k1">if</span><span class="k2">(</span>x <span class="k3">&gt;</span> <span class="n">640</span><span class="k2">)</span>
<span class="number"> 128</span>                <span class="k2">{</span>
<span class="number"> 129</span>                    x <span class="k3">-</span><span class="k3">=</span> <span class="k2">(</span>x <span class="k3">-</span> <span class="n">640</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 130</span>                    dx <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 131</span>                <span class="k2">}</span>
<span class="number"> 132</span>                <span class="k1">if</span><span class="k2">(</span>y <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 133</span>                <span class="k2">{</span>
<span class="number"> 134</span>                    y <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 135</span>                    dy <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 136</span>                <span class="k2">}</span>
<span class="number"> 137</span>                <span class="k1">if</span><span class="k2">(</span>y <span class="k3">&gt;</span> <span class="n">480</span><span class="k2">)</span>
<span class="number"> 138</span>                <span class="k2">{</span>
<span class="number"> 139</span>                    y <span class="k3">-</span><span class="k3">=</span> <span class="k2">(</span>y <span class="k3">-</span> <span class="n">480</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 140</span>                    dy <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 141</span>                <span class="k2">}</span>
<span class="number"> 142</span>
<span class="number"> 143</span>                dx <span class="k3">*</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">9</span><span class="k2">;</span>
<span class="number"> 144</span>                dy <span class="k3">*</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">9</span><span class="k2">;</span>
<span class="number"> 145</span>
<span class="number"> 146</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> ALLEGRO_KEY_MAX<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 147</span>                    <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>i<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">=</span> KEY_SEEN<span class="k2">;</span>
<span class="number"> 148</span>
<span class="number"> 149</span>                redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 150</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 151</span>
<span class="number"> 152</span>            <span class="k1">case</span> ALLEGRO_EVENT_MOUSE_AXES:
<span class="number"> 153</span>                dx <span class="k3">+</span><span class="k3">=</span> event.mouse.dx <span class="k3">*</span> <span class="n">0</span>.<span class="n">1</span><span class="k2">;</span>
<span class="number"> 154</span>                dy <span class="k3">+</span><span class="k3">=</span> event.mouse.dy <span class="k3">*</span> <span class="n">0</span>.<span class="n">1</span><span class="k2">;</span>
<span class="number"> 155</span>                <a href="http://www.allegro.cc/manual/al_set_mouse_xy"><span class="a">al_set_mouse_xy</span></a><span class="k2">(</span>disp, <span class="n">320</span>, <span class="n">240</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 156</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 157</span>
<span class="number"> 158</span>            <span class="k1">case</span> ALLEGRO_EVENT_KEY_DOWN:
<span class="number"> 159</span>                <span class="k1">if</span><span class="k2">(</span>event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_E<span class="k2">)</span>
<span class="number"> 160</span>                    <a href="http://www.allegro.cc/manual/al_play_sample"><span class="a">al_play_sample</span></a><span class="k2">(</span>elephant, <span class="n">1</span>.<span class="n">0</span>, <span class="n">0</span>.<span class="n">0</span>, <span class="n">1</span>.<span class="n">0</span>, ALLEGRO_PLAYMODE_ONCE, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 161</span>                <span class="k1">if</span><span class="k2">(</span>event.keyboard.keycode <span class="k3">!</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span>
<span class="number"> 162</span>                         <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 163</span>            <span class="k1">case</span> ALLEGRO_EVENT_KEY_UP:
<span class="number"> 164</span>                <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>event.keyboard.keycode<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">=</span> KEY_RELEASED<span class="k2">;</span>
<span class="number"> 165</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 166</span>
<span class="number"> 167</span>            <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_CLOSE:
<span class="number"> 168</span>                done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 169</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 170</span>        <span class="k2">}</span>
<span class="number"> 171</span>        <span class="k1">if</span><span class="k2">(</span>done<span class="k2">)</span>
<span class="number"> 172</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 173</span>
<span class="number"> 174</span>        <span class="k1">if</span><span class="k2">(</span>redraw <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>queue<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 175</span>        <span class="k2">{</span>
<span class="number"> 176</span>
<span class="number"> 177</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"> 178</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">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span>, <span class="n">640</span><span class="k3">/</span><span class="n">2</span>, <span class="n">480</span><span class="k3">/</span><span class="n">2</span>, ALLEGRO_ALIGN_CENTER, <span class="s">"Knock knock, it's Nelly"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 179</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>x, y, x <span class="k3">+</span> <span class="n">10</span>, y <span class="k3">+</span> <span class="n">10</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">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 180</span>
<span class="number"> 181</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"> 182</span>
<span class="number"> 183</span>            redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 184</span>        <span class="k2">}</span>
<span class="number"> 185</span>    <span class="k2">}</span>
<span class="number"> 186</span>
<span class="number"> 187</span>    <a href="http://www.allegro.cc/manual/al_destroy_sample"><span class="a">al_destroy_sample</span></a><span class="k2">(</span>elephant<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 188</span>    <a href="http://www.allegro.cc/manual/al_destroy_font"><span class="a">al_destroy_font</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="k2">;</span>
<span class="number"> 189</span>    <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>disp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 190</span>    <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 191</span>    <a href="http://www.allegro.cc/manual/al_destroy_event_queue"><span class="a">al_destroy_event_queue</span></a><span class="k2">(</span>queue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 192</span>
<span class="number"> 193</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 194</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Sat, 04 Feb 2023 00:58:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>At which step is it freezing? When it is loading the file?</p><p>I&#39;m staring at it and don&#39;t see anything. I can test it later tonight when I&#39;m home. I don&#39;t normally use exit.</p><p>cstdio over stdio.h if you are using C++. 
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>The difference (which is neither minor nor a matter of style) is that stdio. h and other C-like libraries when imported in a C++ file may pollute the global namespace, while the corresponding C++ headers (cstdio, cstdlib, cassert) place the corresponding functions, variables, etc., in the std namespace.</p></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Sat, 04 Feb 2023 01:13:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The program gets down to </p><p>ALLEGRO_SAMPLE* elephant = al_load_sample(&quot;elephant.wav&quot;);<br />must_init(elephant, &quot;elephant&quot;);</p><p>It attempts to load the sound file.  Then enters must_init.  While in must_init, it gets down past printf but doesn&#39;t come back out of the function.   There is only one command after printf, exit(1) so I assume that&#39;s where it&#39;s stalling. </p><p>void must_init(bool test, const char *description)<br /> {<br />   if(test) return;<br />   printf(&quot;couldn&#39;t initialize %s\n&quot;, description);<br />   exit(1);<br />}</p><p>All the other inits are successful so it never gets to exit(1).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Sat, 04 Feb 2023 01:42:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t think it&#39;s the exit, but for testing purposes. Add another printf test string after the exit before the function ends.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Sat, 04 Feb 2023 02:09:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Daniel, don&#39;t waste a lot of time on it.  I was just curious if there was an alternative to exit(1) or if it was problematic with C++.</p><p>To your suggestion, here are my results. </p><p>Before File load<br />Before must_init in main<br />After If return in must_init<br />couldn&#39;t initialize elephant<br />After printf in must_init</p><p>If didn&#39;t make it after exit(1)</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="number">  2</span><span class="k1">void</span> must_init<span class="k2">(</span><span class="k1">bool</span> test, <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>description<span class="k2">)</span>
<span class="number">  3</span><span class="k2">{</span>
<span class="number">  4</span>       <span class="k1">if</span><span class="k2">(</span>test<span class="k2">)</span> <span class="k1">return</span><span class="k2">;</span>
<span class="number">  5</span>  std::cout<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"After If return in must_init"</span><span class="k3">&lt;</span><span class="k3">&lt;</span>std::endl<span class="k2">;</span>                     <span class="c">//</span>
<span class="number">  6</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"couldn't initialize %s\n"</span>, description<span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>  std::cout<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"After printf in must_init"</span><span class="k3">&lt;</span><span class="k3">&lt;</span>std::endl<span class="k2">;</span>                        <span class="c">//</span>
<span class="number">  8</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>    std::cout<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"After exit(1) in must_init"</span><span class="k3">&lt;</span><span class="k3">&lt;</span>std::endl<span class="k2">;</span>                       <span class="c">//</span>
<span class="number"> 10</span><span class="k2">}</span>
<span class="number"> 11</span>
<span class="number"> 12</span>
<span class="number"> 13</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 14</span><span class="k2">{</span>
<span class="number"> 15</span>    must_init<span class="k2">(</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="s">"allegro"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>    must_init<span class="k2">(</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="s">"keyboard"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>    must_init<span class="k2">(</span><a href="http://www.allegro.cc/manual/al_install_mouse"><span class="a">al_install_mouse</span></a><span class="k2">(</span><span class="k2">)</span>, <span class="s">"mouse"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>    must_init<span class="k2">(</span><a href="http://www.allegro.cc/manual/al_install_audio"><span class="a">al_install_audio</span></a><span class="k2">(</span><span class="k2">)</span>, <span class="s">"audio"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>    must_init<span class="k2">(</span><a href="http://www.allegro.cc/manual/al_init_acodec_addon"><span class="a">al_init_acodec_addon</span></a><span class="k2">(</span><span class="k2">)</span>, <span class="s">"audio codecs"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>    must_init<span class="k2">(</span><a href="http://www.allegro.cc/manual/al_reserve_samples"><span class="a">al_reserve_samples</span></a><span class="k2">(</span><span class="n">16</span><span class="k2">)</span>, <span class="s">"reserve samples"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>
<span class="number"> 22</span>    std::cout<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"Before File load"</span><span class="k3">&lt;</span><span class="k3">&lt;</span>std::endl<span class="k2">;</span>                                <span class="c">//</span>
<span class="number"> 23</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a><span class="k3">*</span> elephant <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"elephant.wav"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>    std::cout<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"Before must_init in main"</span><span class="k3">&lt;</span><span class="k3">&lt;</span>std::endl<span class="k2">;</span>                        <span class="c">//</span>
<span class="number"> 25</span>    must_init<span class="k2">(</span>elephant, <span class="s">"elephant"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>    std::cout<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"After must_init in main"</span><span class="k3">&lt;</span><span class="k3">&lt;</span>std::endl<span class="k2">;</span>                      <span class="c">//</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Sat, 04 Feb 2023 02:29:05 +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><span class="c">// remove exit</span>
<span class="number">  2</span><span class="k1">bool</span> must_init<span class="k2">(</span><span class="k1">bool</span> test, <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>description<span class="k2">)</span>
<span class="number">  3</span><span class="k2">{</span>
<span class="number">  4</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>test<span class="k2">)</span>
<span class="number">  5</span>    <span class="k2">{</span>
<span class="number">  6</span>        std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"couldn't initialize"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> description <span class="k3">&lt;</span> <span class="k3">&lt;</span>std::endl<span class="k2">;</span>
<span class="number">  7</span>    <span class="k2">}</span>
<span class="number">  8</span>
<span class="number">  9</span>    <span class="k1">return</span> test<span class="k2">;</span>
<span class="number"> 10</span><span class="k2">}</span>
<span class="number"> 11</span>
<span class="number"> 12</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 13</span><span class="k2">{</span>
<span class="number"> 14</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>must_init<span class="k2">(</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="s">"allegro"</span><span class="k2">)</span><span class="k2">)</span> <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span><span class="k2">}</span>
</div></div><p>

This is mine
</p><div class="source-code snippet"><div class="inner"><pre>    <span class="c">// what are we attempting</span>
    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Initializing Allegro Library: "</span><span class="k2">;</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>
        std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"failed"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
        <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
    <span class="k2">}</span>
    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"pass"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
</pre></div></div><p>

it does get messy
</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">int32_t</span> init<span class="k2">(</span><span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Initialization Begin"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number">  4</span>
<span class="number">  5</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Initializing Allegro Library: "</span><span class="k2">;</span>
<span class="number">  6</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="number">  7</span>  <span class="k2">{</span>
<span class="number">  8</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"failed"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number">  9</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 10</span>  <span class="k2">}</span>
<span class="number"> 11</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"pass"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 12</span>
<span class="number"> 13</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Initializing Mouse: "</span><span class="k2">;</span>
<span class="number"> 14</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_mouse"><span class="a">al_install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 15</span>  <span class="k2">{</span>
<span class="number"> 16</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"failed"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 17</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 18</span>  <span class="k2">}</span>
<span class="number"> 19</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"pass"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 20</span>
<span class="number"> 21</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Initializing Keyboard: "</span><span class="k2">;</span>
<span class="number"> 22</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</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"> 23</span>  <span class="k2">{</span>
<span class="number"> 24</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"failed"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 25</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 26</span>  <span class="k2">}</span>
<span class="number"> 27</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"pass"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 28</span>
<span class="number"> 29</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Initializing Image Addon: "</span><span class="k2">;</span>
<span class="number"> 30</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</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"> 31</span>  <span class="k2">{</span>
<span class="number"> 32</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"failed"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 33</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 34</span>  <span class="k2">}</span>
<span class="number"> 35</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"pass"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 36</span>
<span class="number"> 37</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Creating Display: "</span><span class="k2">;</span>
<span class="number"> 38</span>  <a href="http://www.allegro.cc/manual/al_set_new_display_flags"><span class="a">al_set_new_display_flags</span></a><span class="k2">(</span>ALLEGRO_WINDOWED <span class="k3">|</span> ALLEGRO_RESIZABLE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>this-&gt;m_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>App::SCREEN_W, App::SCREEN_H<span class="k2">)</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 40</span>  <span class="k2">{</span>
<span class="number"> 41</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"failed"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 42</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 43</span>  <span class="k2">}</span>
<span class="number"> 44</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"pass"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 45</span>
<span class="number"> 46</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> icon <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">"data\\images\\icon.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 47</span>  <span class="k1">if</span> <span class="k2">(</span>icon<span class="k2">)</span>
<span class="number"> 48</span>  <span class="k2">{</span>
<span class="number"> 49</span>    <a href="http://www.allegro.cc/manual/al_set_display_icon"><span class="a">al_set_display_icon</span></a><span class="k2">(</span>this-&gt;m_display, icon<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>icon<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 51</span>  <span class="k2">}</span>
<span class="number"> 52</span>  <a href="http://www.allegro.cc/manual/al_set_window_title"><span class="a">al_set_window_title</span></a><span class="k2">(</span>this-&gt;m_display, App::APPNAME<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 53</span>
<span class="number"> 54</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Creating Event Queue: "</span><span class="k2">;</span>
<span class="number"> 55</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>this-&gt;m_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="k2">)</span>
<span class="number"> 56</span>  <span class="k2">{</span>
<span class="number"> 57</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"failed"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 58</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 59</span>  <span class="k2">}</span>
<span class="number"> 60</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"pass"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 61</span>
<span class="number"> 62</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Creating Logic Timer: "</span><span class="k2">;</span>
<span class="number"> 63</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>this-&gt;m_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">0</span><span class="k3">/</span>App::TIMING<span class="k2">)</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 64</span>  <span class="k2">{</span>
<span class="number"> 65</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"failed"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 66</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 67</span>  <span class="k2">}</span>
<span class="number"> 68</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"pass"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 69</span>
<span class="number"> 70</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>this-&gt;m_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>this-&gt;m_display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 71</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>this-&gt;m_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>this-&gt;m_timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 72</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>this-&gt;m_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"> 73</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>this-&gt;m_queue, <a href="http://www.allegro.cc/manual/al_get_mouse_event_source"><span class="a">al_get_mouse_event_source</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="number"> 75</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>this-&gt;m_timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 76</span>
<span class="number"> 77</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Initialization Complete"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 78</span>
<span class="number"> 79</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 80</span><span class="k2">}</span>
</div></div><p>

Personally, I don&#39;t like leaving things hanging. My shutdown function always gets called even if there is an error in init. In it, every object I allocated is checked and unallocated.</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
    <span class="k1">if</span> <span class="k2">(</span>init<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="k2">{</span>
        <span class="c">// proceed</span>
        loop<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    <span class="k2">}</span>
    shutdown<span class="k2">(</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 (DanielH)</author>
		<pubDate>Sat, 04 Feb 2023 02:52:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for the insight Daniel. I appreciate the time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Sat, 04 Feb 2023 03:23:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><s>NVM</s></p><p>That said, avoid nasty things like exit and abort. It&#39;s easy enough to return non-zero in main.</p><p>Also, must init should also report success, not just failure.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 04 Feb 2023 06:40:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m home and tested your code. It does just as expected. runs and exits after failing to load elephant.</p><p>output: &quot;couldn&#39;t initialize elephant&quot;</p><p>I put a wav file of my own and the program plays it when I press E. Some issues, how to exit program? You turned off the mouse cursor so I could not press the close button. You don&#39;t have any key presses that close the program either. I was able to close it pressing Alt+f4.</p><p><span class="remote-thumbnail"><span class="json">{"name":"613302","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/c\/b\/cbe4db979eece65810032c1c2bb1fb22.png","w":789,"h":590,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/c\/b\/cbe4db979eece65810032c1c2bb1fb22"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/c/b/cbe4db979eece65810032c1c2bb1fb22-240.jpg" alt="613302" width="240" height="179" /></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Sat, 04 Feb 2023 07:45:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Could be my computer at work.  I ran it from home.  Still Eclipse IDE but on Linux.  It worked just like you said. Must have just been the computer at work.  Doesn&#39;t make sense.    <br />The lesson before was for the mouse.  It was showing how to capture it in the window. On my work (Windows 10) I can Alt Tab to another window and the mouse will go with me.  On Linux I almost had to reboot the computer.  No matter which program I tabbed to, the mouse stayed with the elephant program.  <br />As for the Esc key, the code has been so jumbled up, I&#39;m not sure why it doesn&#39;t work but it didn&#39;t.  <br />In any case there doesn&#39;t seem to be anything wrong with exit(1) which was my first question.  Sorry if I wasted your time.  Thanks again for the help.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Sat, 04 Feb 2023 08:46:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If your program was hanging, it was probably because of a loose thread that was still running. Probably allegro&#39;s audio or window thread.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Tue, 07 Feb 2023 23:38:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Could be Edgar. </p><p>I still think it&#39;s something to do with Windows /Eclipse IDE / Mingw32.  Or a combo there of.  Here is why I say that<br />- I can run the program from outside of the IDE and it will print the &quot;could not init XXXX&quot; line and quit. <br />- Moving too quick, I duplicated my mistake with the Gameplay code, as the audio files all started with audio_XXXXXX.  It was a new program and it did the same thing.  No printing and it would just hang.  I&#39;ve have to check a box in Eclipse to get it to stop.  Fortunately this time I only made the mistake once <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=";D" border="0" />. </p><p>Thanks for the follow up.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Wed, 08 Feb 2023 02:40:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you&#39;re using the same code as before, you haven&#39;t shutdown audio or allegro itself.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 09 Feb 2023 02:26:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This code is horrible to me; why call every library initialisation method and then pass an optional null into a void method with a null as bool? Why not just have a setup function that returns a bool result and determine whether or not to continue or not based on setup success?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dizzy Egg)</author>
		<pubDate>Thu, 09 Feb 2023 04:42:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yeah, I didn&#39;t create the code so I can&#39;t say why they did what they did.  I figured the programmer knew more about it than I did. It seems to work well enough if the ducks are in a row.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Mon, 13 Feb 2023 22:50:04 +0000</pubDate>
	</item>
</rss>
