<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>ALLEGRO_EVENT_DISPLAY_SWITCH_OUT</title>
		<link>http://www.allegro.cc/forums/view/618670</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 23 May 2022 19:38:54 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi again,</p><p>I&#39;ve been concentating on one particular bug in my program.<br />I studied ex_native_dialog quite hard and used some code from it to make a dialog for opening files.<br />The console output for this code is </p><p>Calling pGUIModes[current_mode](GetMenuID(current_mode), IOVariables, GUIData) with current_mode equal to 7<br />current_mode = 7<br />GetMenuID(current_mode) = -1<br />In load image. IO-&gt;queue is not NULL.<br />In load image. About to go into while loop.<br />Waiting for event.<br />Got event.<br />event type was mouse event.<br />Waiting for event.<br />Got event.<br />event type is 46<br />ASYNC_DIALOG_EVENT1 is 1699628593<br />Waiting for event.</p><p>C:\code_projects\art_program_2_debug&gt;</p><p>event type 46 is ALLEGRO_EVENT_DISPLAY_SWITCH_OUT.<br />After the last &#39;waiting for event&#39;, the program quits and I get the command prompt again. Any ideas what could be causing an ALLEGRO_EVENT_DISPLAY_SWITCH_OUT to be triggered? I don&#39;t know Allegro 5 well enough to know how to fix the problem. Need some help please <img src="http://www.allegro.cc/forums/smileys/kiss.gif" alt=":-*" />.</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">#ifndef FILE_CHOOSER_CPP_INCLUDED</span>
<span class="number">   2</span><span class="p">#define FILE_CHOOSER_CPP_INCLUDED</span>
<span class="number">   3</span>
<span class="number">   4</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">   5</span><span class="p">#include &lt;allegro5/allegro_native_dialog.h&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;allegro5/allegro_font.h&gt; //needed by input_output.hpp</span>
<span class="number">   7</span>
<span class="number">   8</span>
<span class="number">   9</span><span class="p">#include "graphics_functions.hpp"</span>
<span class="number">  10</span><span class="p">#include "miscellaneous.hpp"</span>
<span class="number">  11</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  12</span><span class="p">#include &lt;fstream&gt;</span>
<span class="number">  13</span><span class="p">#include &lt;vector&gt;</span>
<span class="number">  14</span><span class="p">#include "font_manager.hpp"</span>
<span class="number">  15</span><span class="p">#include "GUI_bitmaps.hpp"</span>
<span class="number">  16</span><span class="p">#include "data_class.hpp"</span>
<span class="number">  17</span>
<span class="number">  18</span><span class="p">#include &lt;sstream&gt;</span>
<span class="number">  19</span>
<span class="number">  20</span><span class="p">#include "input_output.hpp"</span>
<span class="number">  21</span>
<span class="number">  22</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">  23</span>
<span class="number">  24</span><span class="p">#include "up_and_down.hpp"</span>
<span class="number">  25</span><span class="p">#include "files_list_box.hpp"</span>
<span class="number">  26</span><span class="p">#include "modes_and_menu_ids.hpp"</span>
<span class="number">  27</span>
<span class="number">  28</span>
<span class="number">  29</span><span class="p">#include "file_loader.hpp"</span>
<span class="number">  30</span>
<span class="number">  31</span>
<span class="number">  32</span>
<span class="number">  33</span><span class="c">/* To communicate from a separate thread, we need a user event. */</span>
<span class="number">  34</span><span class="p">#define ASYNC_DIALOG_EVENT1   ALLEGRO_GET_EVENT_TYPE('e', 'N', 'F', '1')</span>
<span class="number">  35</span>
<span class="number">  36</span>
<span class="number">  37</span>
<span class="number">  38</span>
<span class="number">  39</span><span class="k1">typedef</span> <span class="k1">struct</span>
<span class="number">  40</span><span class="k2">{</span>
<span class="number">  41</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">;</span>
<span class="number">  42</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_FILECHOOSER"><span class="a">ALLEGRO_FILECHOOSER</span></a> <span class="k3">*</span>file_dialog<span class="k2">;</span>
<span class="number">  43</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_SOURCE"><span class="a">ALLEGRO_EVENT_SOURCE</span></a> event_source<span class="k2">;</span>
<span class="number">  44</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_THREAD"><span class="a">ALLEGRO_THREAD</span></a> <span class="k3">*</span>thread<span class="k2">;</span>
<span class="number">  45</span><span class="k2">}</span> AsyncDialog<span class="k2">;</span>
<span class="number">  46</span>
<span class="number">  47</span>
<span class="number">  48</span><span class="c">/* async_file_dialog_thread_func() : Our thread to show the native file dialog. */</span>
<span class="number">  49</span><span class="k1">static</span> <span class="k1">void</span> <span class="k3">*</span>async_file_dialog_thread_func<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_THREAD"><span class="a">ALLEGRO_THREAD</span></a> <span class="k3">*</span>thread, <span class="k1">void</span> <span class="k3">*</span>arg<span class="k2">)</span>
<span class="number">  50</span><span class="k2">{</span>
<span class="number">  51</span>   AsyncDialog <span class="k3">*</span>data <span class="k3">=</span> <span class="k2">(</span>AsyncDialog <span class="k3">*</span><span class="k2">)</span> arg<span class="k2">;</span>
<span class="number">  52</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">  53</span>   <span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>thread<span class="k2">;</span>
<span class="number">  54</span>
<span class="number">  55</span>   <a href="http://www.allegro.cc/manual/al_show_native_file_dialog"><span class="a">al_show_native_file_dialog</span></a><span class="k2">(</span>data-&gt;display, data-&gt;file_dialog<span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</span>
<span class="number">  57</span>   event.user.type <span class="k3">=</span> ASYNC_DIALOG_EVENT1<span class="k2">;</span>
<span class="number">  58</span>   <a href="http://www.allegro.cc/manual/al_emit_user_event"><span class="a">al_emit_user_event</span></a><span class="k2">(</span><span class="k3">&amp;</span>data-&gt;event_source, <span class="k3">&amp;</span>event, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  59</span>
<span class="number">  60</span>   <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number">  61</span><span class="k2">}</span>
<span class="number">  62</span>
<span class="number">  63</span>
<span class="number">  64</span><span class="c">/* spawn_async_file_dialog() : opens up a dialog for choosing a file. */</span>
<span class="number">  65</span><span class="k1">static</span> AsyncDialog <span class="k3">*</span>spawn_async_file_dialog<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display, <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>initial_path<span class="k2">)</span>
<span class="number">  66</span><span class="k2">{</span>
<span class="number">  67</span>   AsyncDialog <span class="k3">*</span>data <span class="k3">=</span> <span class="k2">(</span>AsyncDialog <span class="k3">*</span><span class="k2">)</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span><span class="k1">sizeof</span> <span class="k3">*</span>data<span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>
<span class="number">  69</span>   data-&gt;file_dialog <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_native_file_dialog"><span class="a">al_create_native_file_dialog</span></a><span class="k2">(</span>initial_path, <span class="s">"Choose Black and White Image."</span>, NULL, ALLEGRO_FILECHOOSER_PICTURES<span class="k2">)</span><span class="k2">;</span>
<span class="number">  70</span>   <a href="http://www.allegro.cc/manual/al_init_user_event_source"><span class="a">al_init_user_event_source</span></a><span class="k2">(</span><span class="k3">&amp;</span>data-&gt;event_source<span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>   data-&gt;display <span class="k3">=</span> display<span class="k2">;</span>
<span class="number">  72</span>   data-&gt;thread <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_thread"><span class="a">al_create_thread</span></a><span class="k2">(</span>async_file_dialog_thread_func, data<span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>
<span class="number">  74</span>   <a href="http://www.allegro.cc/manual/al_start_thread"><span class="a">al_start_thread</span></a><span class="k2">(</span>data-&gt;thread<span class="k2">)</span><span class="k2">;</span>
<span class="number">  75</span>
<span class="number">  76</span>   <span class="k1">return</span> data<span class="k2">;</span>
<span class="number">  77</span><span class="k2">}</span>
<span class="number">  78</span>
<span class="number">  79</span>
<span class="number">  80</span>
<span class="number">  81</span>
<span class="number">  82</span>
<span class="number">  83</span>
<span class="number">  84</span><span class="c">/* stop_async_dialog() : ends the dialog for choosing a file. */</span>
<span class="number">  85</span><span class="k1">static</span> <span class="k1">void</span> stop_async_dialog<span class="k2">(</span>AsyncDialog <span class="k3">*</span>data<span class="k2">)</span>
<span class="number">  86</span><span class="k2">{</span>
<span class="number">  87</span>   <span class="k1">if</span> <span class="k2">(</span>data<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  88</span>      <a href="http://www.allegro.cc/manual/al_destroy_thread"><span class="a">al_destroy_thread</span></a><span class="k2">(</span>data-&gt;thread<span class="k2">)</span><span class="k2">;</span>
<span class="number">  89</span>      <a href="http://www.allegro.cc/manual/al_destroy_user_event_source"><span class="a">al_destroy_user_event_source</span></a><span class="k2">(</span><span class="k3">&amp;</span>data-&gt;event_source<span class="k2">)</span><span class="k2">;</span>
<span class="number">  90</span>      <span class="k1">if</span> <span class="k2">(</span>data-&gt;file_dialog<span class="k2">)</span>
<span class="number">  91</span>         <a href="http://www.allegro.cc/manual/al_destroy_native_file_dialog"><span class="a">al_destroy_native_file_dialog</span></a><span class="k2">(</span>data-&gt;file_dialog<span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_350.html" target="_blank">free</a><span class="k2">(</span>data<span class="k2">)</span><span class="k2">;</span>
<span class="number">  93</span>   <span class="k2">}</span>
<span class="number">  94</span><span class="k2">}</span>
<span class="number">  95</span>
<span class="number">  96</span>
<span class="number">  97</span>
<span class="number">  98</span>
<span class="number">  99</span><span class="c">/* load_image() : gui mode for loading an image from harddrive. */</span>
<span class="number"> 100</span><span class="k1">int</span> load_image<span class="k2">(</span><span class="k1">int</span> mode_id, InputOutput <span class="k3">*</span>IO, DataClass<span class="k3">&amp;</span> data<span class="k2">)</span>
<span class="number"> 101</span><span class="k2">{</span>
<span class="number"> 102</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"> 103</span>   AsyncDialog <span class="k3">*</span>cur_dialog <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 104</span>   <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>last_path <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 105</span>
<span class="number"> 106</span>   <span class="c">//al_destroy_display(IO-&gt;display);</span>
<span class="number"> 107</span>   <span class="c">//cout &lt;&lt; "In load image." &lt;&lt; endl;</span>
<span class="number"> 108</span>   <span class="c">//system("PAUSE");</span>
<span class="number"> 109</span>   <span class="c">//return -1;</span>
<span class="number"> 110</span>
<span class="number"> 111</span>   
<span class="number"> 112</span>   <span class="k1">if</span><span class="k2">(</span>IO-&gt;queue <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 113</span>   <span class="k2">{</span>
<span class="number"> 114</span>     <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>IO-&gt;display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>       cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"In load image. IO-&gt;queue is NULL."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 116</span>       <a href="http://www.delorie.com/djgpp/doc/libc/libc_802.html" target="_blank">system</a><span class="k2">(</span><span class="s">"PAUSE"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 117</span>     <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>  
<span class="number"> 118</span>   <span class="k2">}</span>
<span class="number"> 119</span>   <span class="k1">else</span>
<span class="number"> 120</span>   <span class="k2">{</span>
<span class="number"> 121</span>     cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"In load image. IO-&gt;queue is not NULL."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 122</span>   <span class="k2">}</span>
<span class="number"> 123</span>   
<span class="number"> 124</span>   <a href="http://www.allegro.cc/manual/al_flush_event_queue"><span class="a">al_flush_event_queue</span></a><span class="k2">(</span>IO-&gt;queue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 125</span>
<span class="number"> 126</span>   <span class="c">//al_clear_to_color(al_map_rgb(60, 60, 200));</span>
<span class="number"> 127</span>   <span class="k1">if</span><span class="k2">(</span>data.static_menu_background <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 128</span>   <span class="k2">{</span>
<span class="number"> 129</span>     <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>IO-&gt;display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 130</span>       cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"In load image. data.static_menu_background is NULL."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 131</span>       <a href="http://www.delorie.com/djgpp/doc/libc/libc_802.html" target="_blank">system</a><span class="k2">(</span><span class="s">"PAUSE"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 132</span>     <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 133</span>   <span class="k2">}</span>
<span class="number"> 134</span>   <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>data.static_menu_background, <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="number"> 135</span>
<span class="number"> 136</span>
<span class="number"> 137</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"> 138</span>   
<span class="number"> 139</span>
<span class="number"> 140</span>   cur_dialog <span class="k3">=</span> spawn_async_file_dialog<span class="k2">(</span>IO-&gt;display, last_path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 141</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>IO-&gt;queue, <span class="k3">&amp;</span>cur_dialog-&gt;event_source<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 142</span>
<span class="number"> 143</span>   <span class="c">//al_destroy_display(IO-&gt;display);</span>
<span class="number"> 144</span>   cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"In load image. About to go into while loop."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 145</span>   <span class="c">//system("PAUSE");</span>
<span class="number"> 146</span>   <span class="c">//return -1;</span>
<span class="number"> 147</span>
<span class="number"> 148</span>   
<span class="number"> 149</span>
<span class="number"> 150</span>
<span class="number"> 151</span>   <span class="k1">while</span><span class="k2">(</span><span class="n">1</span><span class="k2">)</span>
<span class="number"> 152</span>   <span class="k2">{</span>
<span class="number"> 153</span>    cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Waiting for event."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 154</span>    
<span class="number"> 155</span>    <span class="k1">if</span><span class="k2">(</span>IO-&gt;queue <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 156</span>    <span class="k2">{</span>
<span class="number"> 157</span>     <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>IO-&gt;display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 158</span>         cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"IO-&gt;queue is NULL."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 159</span>         <a href="http://www.delorie.com/djgpp/doc/libc/libc_802.html" target="_blank">system</a><span class="k2">(</span><span class="s">"PAUSE"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 160</span>       <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>  
<span class="number"> 161</span>    <span class="k2">}</span>
<span class="number"> 162</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>IO-&gt;queue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 163</span>      
<span class="number"> 164</span>      cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Got event."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 165</span>      <span class="k1">if</span><span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> <span class="n">30</span><span class="k2">)</span>
<span class="number"> 166</span>    <span class="k2">{</span>
<span class="number"> 167</span>      cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"event type was timer event.\n"</span><span class="k2">;</span>  
<span class="number"> 168</span>    <span class="k2">}</span>
<span class="number"> 169</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>event.type <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">10</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> event.type <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">25</span><span class="k2">)</span>
<span class="number"> 170</span>    <span class="k2">{</span>
<span class="number"> 171</span>      cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"event type was mouse event.\n"</span><span class="k2">;</span>  
<span class="number"> 172</span>      
<span class="number"> 173</span>    <span class="k2">}</span>
<span class="number"> 174</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> <span class="n">12</span><span class="k2">)</span>
<span class="number"> 175</span>    <span class="k2">{</span>
<span class="number"> 176</span>      cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"event type is key up."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>  
<span class="number"> 177</span>    <span class="k2">}</span>
<span class="number"> 178</span>    <span class="k1">else</span>
<span class="number"> 179</span>    <span class="k2">{</span>
<span class="number"> 180</span>      cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"event type is "</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> event.type  <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 181</span>          cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"ASYNC_DIALOG_EVENT1 is "</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> ASYNC_DIALOG_EVENT1 <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span> 
<span class="number"> 182</span>      
<span class="number"> 183</span>    <span class="k2">}</span>
<span class="number"> 184</span>
<span class="number"> 185</span>      <span class="k1">if</span><span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ASYNC_DIALOG_EVENT1<span class="k2">)</span> <span class="c">/* dialogue was closed */</span>
<span class="number"> 186</span>      <span class="k2">{</span>
<span class="number"> 187</span>         <a href="http://www.allegro.cc/manual/al_unregister_event_source"><span class="a">al_unregister_event_source</span></a><span class="k2">(</span>IO-&gt;queue, <span class="k3">&amp;</span>cur_dialog-&gt;event_source<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 188</span>
<span class="number"> 189</span>         <span class="c">/* If a file was chosen, put the path to it in the FilesListBox class of the DataClass data. */</span>
<span class="number"> 190</span>
<span class="number"> 191</span>         <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_native_file_dialog_count"><span class="a">al_get_native_file_dialog_count</span></a><span class="k2">(</span>cur_dialog-&gt;file_dialog<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 192</span>         <span class="k2">{</span>
<span class="number"> 193</span>            <span class="k1">int</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>FilesListBox <span class="k3">*</span><span class="k2">)</span> data.vp<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>index_for_next_filename<span class="k2">;</span>
<span class="number"> 194</span>
<span class="number"> 195</span>
<span class="number"> 196</span>
<span class="number"> 197</span>            <span class="k2">(</span><span class="k2">(</span>FilesListBox <span class="k3">*</span><span class="k2">)</span> data.vp<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>file_paths<span class="k2">[</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_path"><span class="a">al_create_path</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_native_file_dialog_path"><span class="a">al_get_native_file_dialog_path</span></a><span class="k2">(</span>cur_dialog-&gt;file_dialog, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 198</span>
<span class="number"> 199</span>            <span class="k2">(</span><span class="k2">(</span>FilesListBox <span class="k3">*</span><span class="k2">)</span> data.vp<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>file_names<span class="k2">[</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_path_filename"><span class="a">al_get_path_filename</span></a><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>FilesListBox <span class="k3">*</span><span class="k2">)</span> data.vp<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>file_paths<span class="k2">[</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 200</span>
<span class="number"> 201</span>            <span class="c">/* Load the file. */</span>
<span class="number"> 202</span>            <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>FilesListBox <span class="k3">*</span><span class="k2">)</span> data.vp<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>bitmaps<span class="k2">[</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span> <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> <a href="http://www.allegro.cc/manual/al_path_cstr"><span class="a">al_path_cstr</span></a><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>FilesListBox <span class="k3">*</span><span class="k2">)</span> data.vp<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>file_paths<span class="k2">[</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span>, ALLEGRO_NATIVE_PATH_SEP<span class="k2">)</span> <span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 203</span>            <span class="k2">{</span>
<span class="number"> 204</span>                <span class="c">/* Set error_data.mode_number to LOAD_IMAGE_MODE so that after error</span>
<span class="number"> 205</span><span class="c">                has been reported, user can load another file. */</span>
<span class="number"> 206</span>                <span class="c">//data.error_data.mode_number = LOAD_IMAGE_MODE;</span>
<span class="number"> 207</span>                <span class="c">//data.error_data.mode_number = FILE_LOADING_PROBLEM;</span>
<span class="number"> 208</span>                <span class="c">//return ERROR_LOG_MODE;</span>
<span class="number"> 209</span>                <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>IO-&gt;display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 210</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"load_image_mode() : Couldn't load file %s.\n"</span>, <span class="k2">(</span><span class="k2">(</span>FilesListBox <span class="k3">*</span><span class="k2">)</span> data.vp<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>file_names<span class="k2">[</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 211</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"filename was : %s"</span>, <span class="k2">(</span><span class="k2">(</span>FilesListBox <span class="k3">*</span><span class="k2">)</span> data.vp<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>file_names<span class="k2">[</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 212</span>                <span class="c">//printf("current working directory = %s", );</span>
<span class="number"> 213</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_802.html" target="_blank">system</a><span class="k2">(</span><span class="s">"PAUSE"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 214</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"> 215</span>            <span class="k2">}</span>
<span class="number"> 216</span>
<span class="number"> 217</span>
<span class="number"> 218</span>      
<span class="number"> 219</span>            <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>FilesListBox <span class="k3">*</span><span class="k2">)</span> data.vp<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>index_for_next_filename <span class="k3">&lt;</span> <span class="k2">(</span><span class="k2">(</span>FilesListBox <span class="k3">*</span><span class="k2">)</span> data.vp<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>max_files<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 220</span>            <span class="k2">{</span>
<span class="number"> 221</span>               <span class="k3">+</span><span class="k3">+</span><span class="k2">(</span><span class="k2">(</span>FilesListBox <span class="k3">*</span><span class="k2">)</span> data.vp<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>index_for_next_filename<span class="k2">;</span>
<span class="number"> 222</span>               <span class="k3">+</span><span class="k3">+</span><span class="k2">(</span><span class="k2">(</span>FilesListBox <span class="k3">*</span><span class="k2">)</span> data.vp<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>num_files_in_files_list_box<span class="k2">;</span>
<span class="number"> 223</span>               <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 224</span>            <span class="k2">}</span>
<span class="number"> 225</span>         
<span class="number"> 226</span>         <span class="k2">}</span>
<span class="number"> 227</span>         <span class="k1">else</span>
<span class="number"> 228</span>         <span class="k2">{</span>
<span class="number"> 229</span>       cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"0 or more than 1 file selected.\n"</span><span class="k2">;</span>
<span class="number"> 230</span>       
<span class="number"> 231</span>             <span class="k1">if</span><span class="k2">(</span>data.file_loader_calling_mode <span class="k3">=</span><span class="k3">=</span> MAIN_MENU_MODE<span class="k2">)</span>
<span class="number"> 232</span>             <span class="k2">{</span>
<span class="number"> 233</span>         <span class="k1">if</span><span class="k2">(</span>cur_dialog <span class="k3">!</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 234</span>           <span class="k2">{</span>
<span class="number"> 235</span>                    stop_async_dialog<span class="k2">(</span>cur_dialog<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 236</span>                 <span class="k2">}</span>
<span class="number"> 237</span>         <span class="k1">else</span>
<span class="number"> 238</span>           <span class="k2">{</span>
<span class="number"> 239</span>          <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>IO-&gt;display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 240</span>                    cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"load_image : 0 or more than 1 file selected. cur_dialog is NULL.\n"</span><span class="k2">;</span>
<span class="number"> 241</span>                    <a href="http://www.delorie.com/djgpp/doc/libc/libc_802.html" target="_blank">system</a><span class="k2">(</span><span class="s">"PAUSE"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 242</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"> 243</span>         <span class="k2">}</span>
<span class="number"> 244</span>         <span class="k1">return</span> MAIN_MENU_MODE<span class="k2">;</span>
<span class="number"> 245</span>             <span class="k2">}</span>
<span class="number"> 246</span>         <span class="k2">}</span>
<span class="number"> 247</span>
<span class="number"> 248</span>         stop_async_dialog<span class="k2">(</span>cur_dialog<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 249</span>         <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 250</span>      <span class="k2">}</span>
<span class="number"> 251</span>
<span class="number"> 252</span>   <span class="k2">}</span>
<span class="number"> 253</span>
<span class="number"> 254</span>   <span class="k1">if</span><span class="k2">(</span>data.file_loader_calling_mode <span class="k3">=</span><span class="k3">=</span> MAIN_MENU_MODE<span class="k2">)</span>
<span class="number"> 255</span>   <span class="k2">{</span>
<span class="number"> 256</span>      <span class="k1">return</span> AFTER_FILE_LOAD_MENU_MODE<span class="k2">;</span>
<span class="number"> 257</span>   <span class="k2">}</span>
<span class="number"> 258</span>   <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>data.file_loader_calling_mode <span class="k3">=</span><span class="k3">=</span> LOAD_FILES_PROMPT_MODE<span class="k2">)</span>
<span class="number"> 259</span>   <span class="k2">{</span>
<span class="number"> 260</span>      <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>FilesListBox <span class="k3">*</span><span class="k2">)</span> data.vp<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>num_files_in_files_list_box <span class="k3">&lt;</span> data.num_files_needed<span class="k2">)</span>
<span class="number"> 261</span>      <span class="k2">{</span>
<span class="number"> 262</span>         <span class="k1">return</span> LOAD_FILES_PROMPT_MODE<span class="k2">;</span>
<span class="number"> 263</span>      <span class="k2">}</span>
<span class="number"> 264</span>      <span class="k1">else</span>
<span class="number"> 265</span>      <span class="k2">{</span>
<span class="number"> 266</span>         data.select_files <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 267</span>         <span class="k1">return</span> data.mode_after_selector<span class="k2">;</span>
<span class="number"> 268</span>      <span class="k2">}</span>
<span class="number"> 269</span>      <span class="c">//data.select_files = true;</span>
<span class="number"> 270</span>      <span class="c">//data.user_info_strings = Menu.GetButtonUserInfoStrings();</span>
<span class="number"> 271</span>
<span class="number"> 272</span>   <span class="k2">}</span>
<span class="number"> 273</span>   <span class="k1">else</span>
<span class="number"> 274</span>   <span class="k2">{</span>
<span class="number"> 275</span>     
<span class="number"> 276</span>     cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Returning -1 from load_image."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 277</span>      <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 278</span>   <span class="k2">}</span>
<span class="number"> 279</span><span class="k2">}</span>
<span class="number"> 280</span>
<span class="number"> 281</span>
<span class="number"> 282</span>
<span class="number"> 283</span>
<span class="number"> 284</span>
<span class="number"> 285</span><span class="p">#endif // FILE_CHOOSER_CPP_INCLUDED</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (William Labbett)</author>
		<pubDate>Mon, 23 May 2022 03:45:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Any time the display loses focus, a SWITCH_OUT event is generated. When it receives focus again, it will receive a SWITCH_IN event.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 23 May 2022 19:38:54 +0000</pubDate>
	</item>
</rss>
