<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Error Message when program finishes</title>
		<link>http://www.allegro.cc/forums/view/617252</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 07 Feb 2018 02:15:47 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi forum!<br />First I want to thank Edgar Reynaldo and Neil Roy, they help me with my last and solved question.  <a href="https://www.allegro.cc/forums/thread/617247">https://www.allegro.cc/forums/thread/617247</a></p><p>But a new problem rised, when timer and video are together, Edgar Reynaldo gave me a piece of code but I didnt understand too much, I tried some times but can not run it fine.</p><p>So, I write this code to check my solution without copy &amp; paste, it plays the video but when I press ESC (to finish the execution)it give me a Windows error:</p><p>&quot;las.exe has stopped working.<br />A problem caused the program to stop working correctly. Windows will close the program and notify you if solution is available.&quot;</p><p>I searched in the forum, but I couldn&#39;t find a solution, ohhh and it message doesnt appear when I close the console. 
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">   2</span><span class="p">#include &lt;windows.h&gt;</span>
<span class="number">   3</span><span class="c">/** CImg lib **/</span>
<span class="number">   4</span><span class="p">#include "CImg.h"</span>
<span class="number">   5</span><span class="k1">using</span> <span class="k1">namespace</span> cimg_library<span class="k2">;</span>
<span class="number">   6</span>
<span class="number">   7</span><span class="c">/** Allegro lib**/</span>
<span class="number">   8</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">   9</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  10</span><span class="p">#include &lt;allegro5/allegro_audio.h&gt;</span>
<span class="number">  11</span><span class="p">#include &lt;allegro5/allegro_acodec.h&gt;</span>
<span class="number">  12</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">  13</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">  14</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</span>
<span class="number">  15</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number">  16</span><span class="c">//#include &lt;allegro_physfs.h&gt;</span>
<span class="number">  17</span><span class="p">#include &lt;allegro5/allegro_video.h&gt;</span>
<span class="number">  18</span><span class="p">#include &lt;allegro5/allegro_native_dialog.h&gt;</span>
<span class="number">  19</span>
<span class="number">  20</span><span class="p">#define DEBUG</span>
<span class="number">  21</span>
<span class="number">  22</span><span class="k1">void</span> initialize<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  23</span><span class="k1">bool</span> captura<span class="k2">(</span><span class="k1">int</span>, <span class="k1">int</span>, <span class="k1">int</span>, <span class="k1">int</span>, <span class="k1">char</span> <span class="k3">*</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  24</span><span class="k1">extern</span> <span class="k1">bool</span> SaveBMPFile<span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span>, HBITMAP, HDC, <span class="k1">int</span>, <span class="k1">int</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span><span class="k1">inline</span> <span class="k1">int</span> GetFilePointer<span class="k2">(</span>HANDLE FileHandle<span class="k2">)</span>
<span class="number">  26</span><span class="k2">{</span>
<span class="number">  27</span>    <span class="k1">return</span> SetFilePointer<span class="k2">(</span>FileHandle, <span class="n">0</span>, <span class="n">0</span>, FILE_CURRENT<span class="k2">)</span><span class="k2">;</span>
<span class="number">  28</span><span class="k2">}</span>
<span class="number">  29</span>
<span class="number">  30</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span><span class="k3">*</span><span class="k3">*</span> argv<span class="k2">)</span>
<span class="number">  31</span><span class="k2">{</span>
<span class="number">  32</span>    <span class="c">//captura(0,0, 1366, 768,"screenshot.bmp");</span>
<span class="number">  33</span>
<span class="number">  34</span>    initialize<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  35</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>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><span class="n">1366</span>, <span class="n">768</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span>    ALLEGRO_VIDEO<span class="k3">*</span> video <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  37</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> bitmap <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  38</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> img <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  39</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>evqueue <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">  40</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>fps_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">60</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span>    ALLEGRO_PATH <span class="k3">*</span>path <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_standard_path"><span class="a">al_get_standard_path</span></a><span class="k2">(</span>ALLEGRO_RESOURCES_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_92.html" target="_blank">chdir</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>path, <span class="s">'/'</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>    <span class="k1">bool</span> render <span class="k3">=</span> <span class="k1">true</span>, executing <span class="k3">=</span> <span class="k1">true</span>, redraw <span class="k3">=</span> <span class="k1">true</span>, playvideo1 <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  44</span>
<span class="number">  45</span>
<span class="number">  46</span>    al_set_display_flag<span class="k2">(</span>display, ALLEGRO_FULLSCREEN_WINDOW, <span class="k1">true</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  47</span>    al_set_display_flag<span class="k2">(</span>display, ALLEGRO_PROGRAMMABLE_PIPELINE, <span class="k1">true</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  48</span>
<span class="number">  49</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span>
<span class="number">  50</span>    <span class="k2">{</span>
<span class="number">  51</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Failed to create display!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  52</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" no display "</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  53</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>evqueue, <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">  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>evqueue, <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>    <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>evqueue, <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>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</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>evqueue, <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>fps_timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  58</span>
<span class="number">  59</span>    <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>fps_timer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  60</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">  61</span>    <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  62</span>    <span class="k1">while</span> <span class="k2">(</span>executing<span class="k2">)</span>
<span class="number">  63</span>    <span class="k2">{</span>
<span class="number">  64</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">  65</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>evqueue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number">  66</span>
<span class="number">  67</span>        <span class="k1">switch</span> <span class="k2">(</span>event.type<span class="k2">)</span>
<span class="number">  68</span>        <span class="k2">{</span>
<span class="number">  69</span>        <span class="k1">case</span> ALLEGRO_EVENT_TIMER:
<span class="number">  70</span>            render <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  71</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  72</span>        <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_CLOSE:
<span class="number">  73</span>            executing <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  74</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  75</span>        <span class="k1">case</span> ALLEGRO_EVENT_KEY_DOWN:
<span class="number">  76</span>            executing <span class="k3">=</span> event.keyboard.keycode <span class="k3">!</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">;</span>
<span class="number">  77</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  78</span>        <span class="k2">}</span>
<span class="number">  79</span>
<span class="number">  80</span>        <span class="k1">if</span> <span class="k2">(</span>render <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>evqueue<span class="k2">)</span><span class="k2">)</span>
<span class="number">  81</span>        <span class="k2">{</span>
<span class="number">  82</span>            render <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  83</span>
<span class="number">  84</span>            <span class="k1">if</span><span class="k2">(</span>playvideo1<span class="k3">=</span><span class="k3">=</span><span class="k1">true</span><span class="k2">)</span>
<span class="number">  85</span>            <span class="k2">{</span>
<span class="number">  86</span>                video <span class="k3">=</span> al_open_video<span class="k2">(</span><span class="s">"welcome.ogv"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  87</span>                al_start_video<span class="k2">(</span>video, <a href="http://www.allegro.cc/manual/al_get_default_mixer"><span class="a">al_get_default_mixer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>                playvideo1<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span>
<span class="number">  89</span>            <span class="k2">}</span>
<span class="number">  90</span>            <span class="k1">if</span><span class="k2">(</span>redraw<span class="k2">)</span>
<span class="number">  91</span>            <span class="k2">{</span>
<span class="number">  92</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">25</span>,<span class="n">155</span>,<span class="n">55</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  93</span>                redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  94</span>            <span class="k2">}</span>
<span class="number">  95</span>            bitmap <span class="k3">=</span> al_get_video_frame<span class="k2">(</span>video<span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>            <span class="k1">if</span><span class="k2">(</span>bitmap<span class="k3">=</span><span class="k3">=</span>NULL<span class="k2">)</span>
<span class="number">  97</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" bitmap empty "</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  98</span>            <span class="k1">if</span><span class="k2">(</span>bitmap<span class="k2">)</span>
<span class="number">  99</span>            <span class="k2">{</span>
<span class="number"> 100</span>                <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bitmap, <span class="n">111</span>, <span class="n">200</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</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"> 102</span>                <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">01</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 103</span>            <span class="k2">}</span>
<span class="number"> 104</span>
<span class="number"> 105</span>        <span class="k2">}</span>
<span class="number"> 106</span>        render <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 107</span>    <span class="k2">}</span>
<span class="number"> 108</span>
<span class="number"> 109</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>evqueue, <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"> 110</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>evqueue, <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"> 111</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>evqueue, <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>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 112</span>    <a href="http://www.allegro.cc/manual/al_unregister_event_source"><span class="a">al_unregister_event_source</span></a><span class="k2">(</span>evqueue, <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>fps_timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 113</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>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>    al_close_video<span class="k2">(</span>video<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 116</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>evqueue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 117</span>    <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>fps_timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 118</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>bitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 119</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>img<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 120</span>    <a href="http://www.allegro.cc/manual/al_destroy_path"><span class="a">al_destroy_path</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 121</span>
<span class="number"> 122</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 123</span><span class="k2">}</span>
</div></div><p>
Note: playvideo1 in the finished program must be false, and only when the student press a button with the mouse it must be true and then start video.<br />If the size of video is large it gives some glitches, but in this projects isn&#39;t a problem.</p><p>If somebody find the problem, please help me.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AramisL)</author>
		<pubDate>Thu, 01 Feb 2018 22:54:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Try executing <span class="source-code"><a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span></span> last.  I am wondering if that might cause problems when you destroy it before you close the video or destroy the bitmaps?</p><p>As a rule of thumb, I destroy these things in the reverse order that I created them in, to be safe.</p><p>I would also check to see if your <span class="source-code">display</span> variable is valid immediately after you create display and then <span class="source-code"><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> if it fails rather than waiting until later on to check it.  I also note that you don&#39;t exit if it fails, so that will definitely cause a problem if creating it fails and then you go to exit normally, your program will try and destroy the display when none was created.</p><p>Always check for errors right away anyhow and exit if they fail with an error message, destroying anything that was created before you exit.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Roy)</author>
		<pubDate>Fri, 02 Feb 2018 00:26:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Are you using Visual Studio? If so, it&#39;s super easy to just turn on the debugger, place a breakpoint before the end, and &quot;step through&quot; the code until it blows up and you&#39;ll know the exact line it blew up.</p><p>Heck, even without the breakpoint, Visual Studio should still tell you the line of code responsible if you just run it with Debug (Control-F5?) instead of normal mode.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Fri, 02 Feb 2018 00:42:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for reply, I tried some solutions, and change a lot of settings and this code works, doesn&#39;t give error BUT never return 0, unless if I comment al_close_video.<br />I use CodeBlocks so there are 2 logs, the first with no error and return 0, and the second never return 0 and no message error either, as we can see &quot;DirectSound closed&quot; disappeared.<br />My question is: is it so important al_close_video? can I fix it?
</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/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>fps_timer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  3</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">  4</span>    <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>    <span class="k1">while</span> <span class="k2">(</span>executing<span class="k2">)</span>
<span class="number">  6</span>    <span class="k2">{</span>
<span class="number">  7</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">  8</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>evqueue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span>        <span class="k1">switch</span> <span class="k2">(</span>event.type<span class="k2">)</span>
<span class="number"> 11</span>        <span class="k2">{</span>
<span class="number"> 12</span>        <span class="k1">case</span> ALLEGRO_EVENT_TIMER:
<span class="number"> 13</span>            render <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 14</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 15</span>        <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_CLOSE:
<span class="number"> 16</span>            executing <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 17</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</span>        <span class="k1">case</span> ALLEGRO_EVENT_KEY_DOWN:
<span class="number"> 20</span>            executing <span class="k3">=</span> event.keyboard.keycode <span class="k3">!</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">;</span>
<span class="number"> 21</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 22</span>        <span class="k2">}</span>
<span class="number"> 23</span>
<span class="number"> 24</span>        <span class="k1">if</span> <span class="k2">(</span>render <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>evqueue<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 25</span>        <span class="k2">{</span>
<span class="number"> 26</span>            render <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 27</span>
<span class="number"> 28</span>            <span class="k1">if</span><span class="k2">(</span>playvideo1<span class="k3">=</span><span class="k3">=</span><span class="k1">true</span><span class="k2">)</span>
<span class="number"> 29</span>            <span class="k2">{</span>
<span class="number"> 30</span>                video <span class="k3">=</span> al_open_video<span class="k2">(</span><span class="s">"welcome.ogv"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>                al_start_video<span class="k2">(</span>video, <a href="http://www.allegro.cc/manual/al_get_default_mixer"><span class="a">al_get_default_mixer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span>                playvideo1<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span>
<span class="number"> 33</span>            <span class="k2">}</span>
<span class="number"> 34</span>            <span class="k1">if</span><span class="k2">(</span>redraw<span class="k2">)</span>
<span class="number"> 35</span>            <span class="k2">{</span>
<span class="number"> 36</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">25</span>,<span class="n">155</span>,<span class="n">55</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span>                redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 38</span>            <span class="k2">}</span>
<span class="number"> 39</span>            bitmap <span class="k3">=</span> al_get_video_frame<span class="k2">(</span>video<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span>            <span class="k1">if</span><span class="k2">(</span>bitmap<span class="k3">=</span><span class="k3">=</span>NULL<span class="k2">)</span>
<span class="number"> 41</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" bitmap empty "</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span>            <span class="k1">if</span><span class="k2">(</span>bitmap<span class="k2">)</span>
<span class="number"> 43</span>            <span class="k2">{</span>
<span class="number"> 44</span>                <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bitmap, <span class="n">99</span>, <span class="n">100</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</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"> 46</span>                <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">01</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 47</span>            <span class="k2">}</span>
<span class="number"> 48</span>
<span class="number"> 49</span>        <span class="k2">}</span>
<span class="number"> 50</span>        render <span class="k3">=</span> <span class="k1">false</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_unregister_event_source"><span class="a">al_unregister_event_source</span></a><span class="k2">(</span>evqueue, <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_unregister_event_source"><span class="a">al_unregister_event_source</span></a><span class="k2">(</span>evqueue, <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>display<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_unregister_event_source"><span class="a">al_unregister_event_source</span></a><span class="k2">(</span>evqueue, <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>fps_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_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 56</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>evqueue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 57</span>            <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>fps_timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span>            <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>bitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 59</span>            <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 60</span>            <a href="http://www.allegro.cc/manual/al_destroy_path"><span class="a">al_destroy_path</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 61</span>
<span class="number"> 62</span>            shutdown<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 63</span>            al_close_video<span class="k2">(</span>video<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 64</span>            <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 65</span><span class="k2">}</span>
<span class="number"> 66</span><span class="k1">void</span> shutdown<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 67</span><span class="k2">{</span>
<span class="number"> 68</span>    <a href="http://www.allegro.cc/manual/al_shutdown_ttf_addon"><span class="a">al_shutdown_ttf_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 69</span>    <a href="http://www.allegro.cc/manual/al_shutdown_font_addon"><span class="a">al_shutdown_font_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 70</span>    <a href="http://www.allegro.cc/manual/al_shutdown_primitives_addon"><span class="a">al_shutdown_primitives_addon</span></a><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_uninstall_keyboard"><span class="a">al_uninstall_keyboard</span></a><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_uninstall_mouse"><span class="a">al_uninstall_mouse</span></a><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_uninstall_audio"><span class="a">al_uninstall_audio</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 74</span>    <a href="http://www.allegro.cc/manual/al_uninstall_system"><span class="a">al_uninstall_system</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 75</span><span class="k2">}</span>
</div></div><p>
Both without message error<br />allegro.log   (1) Return 0<br />d3d      D E:\LIBS\LIBS71Build\allegro\src\win\d3d_bmp.cpp:539  _al_d3d_sync_bitmap              [   2.16498] _al_d3d_sync_bitmap (system) ref count == 1<br />d3d      D E:\LIBS\LIBS71Build\allegro\src\win\d3d_bmp.cpp:545  _al_d3d_sync_bitmap              [   2.16501] _al_d3d_sync_bitmap (video) ref count == 1<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.30824] removed dtor for timer 01FB6140<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.30830] removed dtor for queue 01FB4248<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.30832] removed dtor for sub_bitmap 01FBBB98<br />video    D E:\LIBS\LIBS71Build\allegro\addons\video\ogv.c:1104 decode_thread_func               [   3.31926] End decode loop.<br />audio    W E:\LIBS\LIBS71Build\allegro\addons\audio\kcm_stream.c:641  _al_kcm_refill_stream            [   3.42019] Out of buffers<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.42351] removed dtor for timer 01FB5C70<br />video    D E:\LIBS\LIBS71Build\allegro\addons\video\ogv.c:1113 decode_thread_func               [   3.42354] Thread exit.<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.42368] removed dtor for queue 0207E1E0<br />video    D E:\LIBS\LIBS71Build\allegro\addons\video\ogv.c:252  free_stream                      [   3.42375] Clean up Theora.<br />video    D E:\LIBS\LIBS71Build\allegro\addons\video\ogv.c:268  free_stream                      [   3.42386] Clean up Vorbis.<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.42397] removed dtor for bitmap 02075E18<br />d3d      I E:\LIBS\LIBS71Build\allegro\src\win\d3d_disp.cpp:901  d3d_destroy_display              [   3.42415] destroying display 01FB2E20 (current 00000000)<br />d3d      D E:\LIBS\LIBS71Build\allegro\src\win\d3d_disp.cpp:885  d3d_destroy_display_internals    [   3.42653] waiting for display 01FB2E20&#39;s thread to end<br />d3d      W E:\LIBS\LIBS71Build\allegro\src\win\d3d_disp.cpp:595  d3d_destroy_device               [   3.43304] d3d_destroy_device: ref count not 0<br />d3d      I E:\LIBS\LIBS71Build\allegro\src\win\d3d_disp.cpp:1550 d3d_display_thread_proc          [   3.43709] d3d display thread exits<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.43964] removed dtor for sample_instance 0003DF90<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.43966] removed dtor for mixer 0003DC60<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:513  _dsound_stop_voice               [   3.43967] Stopping voice<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:530  _dsound_stop_voice               [   3.43968] Joining thread<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:536  _dsound_stop_voice               [   3.44340] Joined thread<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:538  _dsound_stop_voice               [   3.44342] Destroying thread<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:540  _dsound_stop_voice               [   3.44343] Thread destroyed<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:547  _dsound_stop_voice               [   3.44344] Releasing buffer<br />audio-dsound I E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:551  _dsound_stop_voice               [   3.44345] Voice stopped<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.44348] removed dtor for voice 0003D788<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:365  _dsound_deallocate_voice         [   3.44349] Deallocating voice<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:370  _dsound_deallocate_voice         [   3.44350] Deallocated voice<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:281  _dsound_close                    [   3.44352] Releasing device<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:283  _dsound_close                    [   3.45713] Released device<br />audio-dsound I E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:284  _dsound_close                    [   3.45716] DirectSound closed<br />__________________________________________________________________________________<br />allegro.log (2) never return 0<br />d3d      D E:\LIBS\LIBS71Build\allegro\src\win\d3d_bmp.cpp:539  _al_d3d_sync_bitmap              [   3.35485] _al_d3d_sync_bitmap (system) ref count == 1<br />d3d      D E:\LIBS\LIBS71Build\allegro\src\win\d3d_bmp.cpp:545  _al_d3d_sync_bitmap              [   3.43250] _al_d3d_sync_bitmap (video) ref count == 1<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.44549] removed dtor for queue 02066440<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.44553] removed dtor for timer 020665B0<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.44555] removed dtor for sub_bitmap 02068900<br />d3d      I E:\LIBS\LIBS71Build\allegro\src\win\d3d_disp.cpp:901  d3d_destroy_display              [   3.44556] destroying display 0205F5F0 (current 00000000)<br />bitmap   D E:\LIBS\LIBS71Build\allegro\src\bitmap_type.c:308  _al_convert_to_memory_bitmap     [   3.44850] converting display bitmap 020756D0 to memory bitmap<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:196  _al_register_destructor          [   3.44855] added dtor for bitmap 02066528, func 0040231F<br />d3d      D E:\LIBS\LIBS71Build\allegro\src\win\d3d_bmp.cpp:539  _al_d3d_sync_bitmap              [   3.44858] _al_d3d_sync_bitmap (system) ref count == 1<br />d3d      D E:\LIBS\LIBS71Build\allegro\src\win\d3d_bmp.cpp:545  _al_d3d_sync_bitmap              [   3.44859] _al_d3d_sync_bitmap (video) ref count == 1<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.45198] removed dtor for bitmap 02066528<br />d3d      D E:\LIBS\LIBS71Build\allegro\src\win\d3d_disp.cpp:885  d3d_destroy_display_internals    [   3.45249] waiting for display 0205F5F0&#39;s thread to end<br />d3d      W E:\LIBS\LIBS71Build\allegro\src\win\d3d_disp.cpp:595  d3d_destroy_device               [   3.45608] d3d_destroy_device: ref count not 0<br />d3d      I E:\LIBS\LIBS71Build\allegro\src\win\d3d_disp.cpp:1550 d3d_display_thread_proc          [   3.46466] d3d display thread exits<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.46592] removed dtor for sample_instance 02051B88<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.46595] removed dtor for mixer 020516F0<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:513  _dsound_stop_voice               [   3.46596] Stopping voice<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:530  _dsound_stop_voice               [   3.46597] Joining thread<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:536  _dsound_stop_voice               [   3.47589] Joined thread<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:538  _dsound_stop_voice               [   3.47591] Destroying thread<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:540  _dsound_stop_voice               [   3.47593] Thread destroyed<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:547  _dsound_stop_voice               [   3.47593] Releasing buffer<br />audio-dsound I E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:551  _dsound_stop_voice               [   3.47594] Voice stopped<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.47596] removed dtor for voice 003FEE98<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:365  _dsound_deallocate_voice         [   3.47598] Deallocating voice<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:370  _dsound_deallocate_voice         [   3.47599] Deallocated voice<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:281  _dsound_close                    [   3.47601] Releasing device<br />audio-dsound D E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:283  _dsound_close                    [   3.54388] Released device<br />audio-dsound I E:\LIBS\LIBS71Build\allegro\addons\audio\dsound.cpp:284  _dsound_close                    [   3.54391] DirectSound closed<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:116  _al_run_destructors              [   3.54392] calling dtor for timer 06D9F748, func 0042A6AD<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.54393] removed dtor for timer 06D9F748<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:116  _al_run_destructors              [   3.54394] calling dtor for queue 06D8F278, func 0042065F<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.54395] removed dtor for queue 06D8F278<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:116  _al_run_destructors              [   3.54397] calling dtor for bitmap 020756D0, func 0040231F<br />dtor     D E:\LIBS\LIBS71Build\allegro\src\dtor.c:227  _al_unregister_destructor        [   3.54398] removed dtor for bitmap 020756D0
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AramisL)</author>
		<pubDate>Fri, 02 Feb 2018 09:57:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;s a good rule of thumb to destroy everything you create, and in the reverse order.</p><p>That said,</p><p>All you really need to do is close the video and shutdown allegro. Note, most of this is done for you automatically. al_uninstall_system is usually registered with atexit by al_init. Which means you don&#39;t need to call anything. Except al_close_video.</p><div class="source-code snippet"><div class="inner"><pre><span class="c">/// end main loop</span>
   al_close_video<span class="k2">(</span>video<span class="k2">)</span><span class="k2">;</span>
   <a href="http://www.allegro.cc/manual/al_uninstall_system"><span class="a">al_uninstall_system</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="c">/// mostly optional if you called al_init</span>
   <span class="c">/// al_close_video(video);/// Would be bad, as allegro's vtable has been destroyed</span>
   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="k2">}</span>
<span class="c">/// Beware! Global destructors run here!!! (C++ warning)</span>
</pre></div></div><p>

EDIT<br />Updated code a little to be more clear on what is going on.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Fri, 02 Feb 2018 14:55:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi! I solved the problem adding bitmap=NULL after somebody closes the windows or when the ESC buttom is pressed.<br />As you may have read, there was a log that worked, and that is rare, because one program give the same output for the same input; so, why some times did the program work? that smelled like pointer trouble.<br />So the program works fine now, thanks all for your help!  <img src="http://www.allegro.cc/forums/smileys/smiley.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">#include &lt;stdio.h&gt;</span>
<span class="number">   2</span><span class="p">#include &lt;windows.h&gt;</span>
<span class="number">   3</span><span class="c">/** CImg lib **/</span>
<span class="number">   4</span><span class="p">#include "CImg.h"</span>
<span class="number">   5</span><span class="k1">using</span> <span class="k1">namespace</span> cimg_library<span class="k2">;</span>
<span class="number">   6</span>
<span class="number">   7</span><span class="c">/** Allegro lib**/</span>
<span class="number">   8</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">   9</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  10</span><span class="p">#include &lt;allegro5/allegro_audio.h&gt;</span>
<span class="number">  11</span><span class="p">#include &lt;allegro5/allegro_acodec.h&gt;</span>
<span class="number">  12</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">  13</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">  14</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</span>
<span class="number">  15</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number">  16</span><span class="c">//#include &lt;allegro_physfs.h&gt;</span>
<span class="number">  17</span><span class="p">#include &lt;allegro5/allegro_video.h&gt;</span>
<span class="number">  18</span><span class="p">#include &lt;allegro5/allegro_native_dialog.h&gt;</span>
<span class="number">  19</span>
<span class="number">  20</span><span class="p">#define DEBUG</span>
<span class="number">  21</span>
<span class="number">  22</span><span class="k1">void</span> initialize<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  23</span><span class="k1">void</span> shutdown<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  24</span><span class="k1">bool</span> captura<span class="k2">(</span><span class="k1">int</span>, <span class="k1">int</span>, <span class="k1">int</span>, <span class="k1">int</span>, <span class="k1">char</span> <span class="k3">*</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span><span class="k1">extern</span> <span class="k1">bool</span> SaveBMPFile<span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span>, HBITMAP, HDC, <span class="k1">int</span>, <span class="k1">int</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span><span class="k1">inline</span> <span class="k1">int</span> GetFilePointer<span class="k2">(</span>HANDLE FileHandle<span class="k2">)</span>
<span class="number">  27</span><span class="k2">{</span>
<span class="number">  28</span>    <span class="k1">return</span> SetFilePointer<span class="k2">(</span>FileHandle, <span class="n">0</span>, <span class="n">0</span>, FILE_CURRENT<span class="k2">)</span><span class="k2">;</span>
<span class="number">  29</span><span class="k2">}</span>
<span class="number">  30</span>
<span class="number">  31</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span><span class="k3">*</span><span class="k3">*</span> argv<span class="k2">)</span>
<span class="number">  32</span><span class="k2">{</span>
<span class="number">  33</span><span class="c">/**    captura(0,0, 1366, 768,"pantalla3.bmp");  it takes a screenshot </span>
<span class="number">  34</span><span class="c">and save it, to show it later with allegro **/</span>
<span class="number">  35</span>    initialize<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>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><span class="n">500</span>, <span class="n">368</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span>    ALLEGRO_VIDEO<span class="k3">*</span> video <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  38</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> bitmap <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  39</span><span class="c">//    ALLEGRO_BITMAP* img = NULL;</span>
<span class="number">  40</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>evqueue <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">  41</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>fps_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">60</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>    ALLEGRO_PATH <span class="k3">*</span>path <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_standard_path"><span class="a">al_get_standard_path</span></a><span class="k2">(</span>ALLEGRO_RESOURCES_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_92.html" target="_blank">chdir</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>path, <span class="s">'/'</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  44</span>    <span class="k1">bool</span> render <span class="k3">=</span> <span class="k1">true</span>, executing <span class="k3">=</span> <span class="k1">true</span>, redraw <span class="k3">=</span> <span class="k1">true</span>, playvideo1 <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  45</span>
<span class="number">  46</span>
<span class="number">  47</span><span class="c">//    al_set_display_flag(display, ALLEGRO_FULLSCREEN_WINDOW, true);</span>
<span class="number">  48</span><span class="c">//    al_set_display_flag(display, ALLEGRO_PROGRAMMABLE_PIPELINE, true);</span>
<span class="number">  49</span>
<span class="number">  50</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span>
<span class="number">  51</span>    <span class="k2">{</span>
<span class="number">  52</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Failed to create display!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  53</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" no displ "</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  54</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>evqueue, <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">  56</span><span class="c">//    al_register_event_source(evqueue, al_get_mouse_event_source());</span>
<span class="number">  57</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>evqueue, <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>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  58</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>evqueue, <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>fps_timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  59</span>
<span class="number">  60</span>    <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>fps_timer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  61</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">  62</span>    <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>    <span class="k1">while</span> <span class="k2">(</span>executing<span class="k2">)</span>
<span class="number">  64</span>    <span class="k2">{</span>
<span class="number">  65</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> event<span class="k2">;</span>
<span class="number">  66</span>        <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>evqueue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number">  67</span>
<span class="number">  68</span>        <span class="k1">switch</span> <span class="k2">(</span>event.type<span class="k2">)</span>
<span class="number">  69</span>        <span class="k2">{</span>
<span class="number">  70</span>        <span class="k1">case</span> ALLEGRO_EVENT_TIMER:
<span class="number">  71</span>            render <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  72</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  73</span>        <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_CLOSE:
<span class="number">  74</span>            executing <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  75</span>            bitmap<span class="k3">=</span>NULL<span class="k2">;</span>    <span class="c">/** already added **/</span>
<span class="number">  76</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  77</span>
<span class="number">  78</span>        <span class="k1">case</span> ALLEGRO_EVENT_KEY_DOWN:
<span class="number">  79</span>            executing <span class="k3">=</span> event.keyboard.keycode <span class="k3">!</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">;</span>
<span class="number">  80</span>            bitmap<span class="k3">=</span>NULL<span class="k2">;</span>    <span class="c">/** already added **/</span>
<span class="number">  81</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number">  82</span>        <span class="k2">}</span>
<span class="number">  83</span>
<span class="number">  84</span>        <span class="k1">if</span> <span class="k2">(</span>render <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>evqueue<span class="k2">)</span><span class="k2">)</span>
<span class="number">  85</span>        <span class="k2">{</span>
<span class="number">  86</span>            render <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  87</span>
<span class="number">  88</span>            <span class="k1">if</span><span class="k2">(</span>playvideo1<span class="k3">=</span><span class="k3">=</span><span class="k1">true</span><span class="k2">)</span>
<span class="number">  89</span>            <span class="k2">{</span>
<span class="number">  90</span>                video <span class="k3">=</span> al_open_video<span class="k2">(</span><span class="s">"welcome.ogv"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>                al_start_video<span class="k2">(</span>video, <a href="http://www.allegro.cc/manual/al_get_default_mixer"><span class="a">al_get_default_mixer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>                playvideo1<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span>
<span class="number">  93</span>            <span class="k2">}</span>
<span class="number">  94</span>            <span class="k1">if</span><span class="k2">(</span>redraw<span class="k2">)</span>
<span class="number">  95</span>            <span class="k2">{</span>
<span class="number">  96</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">25</span>,<span class="n">155</span>,<span class="n">55</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>                redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  98</span>            <span class="k2">}</span>
<span class="number">  99</span>            bitmap <span class="k3">=</span> al_get_video_frame<span class="k2">(</span>video<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>            <span class="k1">if</span><span class="k2">(</span>bitmap<span class="k3">=</span><span class="k3">=</span>NULL<span class="k2">)</span>
<span class="number"> 101</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" bitmap empty "</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 102</span>            <span class="k1">if</span><span class="k2">(</span>bitmap<span class="k2">)</span>
<span class="number"> 103</span>            <span class="k2">{</span>
<span class="number"> 104</span>                <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bitmap, <span class="n">99</span>, <span class="n">100</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 105</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"> 106</span>                <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">01</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 107</span>            <span class="k2">}</span>
<span class="number"> 108</span>
<span class="number"> 109</span>        <span class="k2">}</span>
<span class="number"> 110</span>        render <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 111</span>    <span class="k2">}</span>
<span class="number"> 112</span>
<span class="number"> 113</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>evqueue, <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"> 114</span><span class="c">//al_unregister_event_source(evqueue, al_get_mouse_event_source());</span>
<span class="number"> 115</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>evqueue, <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>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 116</span>    <a href="http://www.allegro.cc/manual/al_unregister_event_source"><span class="a">al_unregister_event_source</span></a><span class="k2">(</span>evqueue, <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>fps_timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 117</span><span class="c">//al_set_target_bitmap(NULL);</span>
<span class="number"> 118</span>                           <span class="c">/** order changed, to avoid any trouble **/</span>
<span class="number"> 119</span>    <a href="http://www.allegro.cc/manual/al_destroy_path"><span class="a">al_destroy_path</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 120</span>    <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>fps_timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 121</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>evqueue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 122</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>bitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 123</span>    al_close_video<span class="k2">(</span>video<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 124</span>    <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 125</span>
<span class="number"> 126</span>
<span class="number"> 127</span>    shutdown<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 128</span>
<span class="number"> 129</span>    <a href="http://www.allegro.cc/manual/al_uninstall_system"><span class="a">al_uninstall_system</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 130</span><span class="c">//al_destroy_bitmap(img);</span>
<span class="number"> 131</span>
<span class="number"> 132</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 133</span><span class="k2">}</span>
<span class="number"> 134</span>
<span class="number"> 135</span><span class="k1">void</span> initialize<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 136</span><span class="k2">{</span>
<span class="number"> 137</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a><span class="k2">(</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">int</span><span class="k2">)</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 138</span>
<span class="number"> 139</span><span class="p">#ifdef DEBUG</span>
<span class="number"> 140</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" Allegro v%i.%i.%i\n"</span>,
<span class="number"> 141</span>           <a href="http://www.allegro.cc/manual/al_get_allegro_version"><span class="a">al_get_allegro_version</span></a><span class="k2">(</span><span class="k2">)</span> <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">24</span>,
<span class="number"> 142</span>           <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_allegro_version"><span class="a">al_get_allegro_version</span></a><span class="k2">(</span><span class="k2">)</span> <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">16</span><span class="k2">)</span> <span class="k3">&amp;</span> <span class="n">255</span>,
<span class="number"> 143</span>           <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_allegro_version"><span class="a">al_get_allegro_version</span></a><span class="k2">(</span><span class="k2">)</span> <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">)</span> <span class="k3">&amp;</span> <span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 144</span>
<span class="number"> 145</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\n video v%i.%i.%i\n"</span>,
<span class="number"> 146</span>           al_get_allegro_video_version<span class="k2">(</span><span class="k2">)</span> <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">24</span>,
<span class="number"> 147</span>           <span class="k2">(</span>al_get_allegro_video_version<span class="k2">(</span><span class="k2">)</span> <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">16</span><span class="k2">)</span> <span class="k3">&amp;</span> <span class="n">255</span>,
<span class="number"> 148</span>           <span class="k2">(</span>al_get_allegro_video_version<span class="k2">(</span><span class="k2">)</span> <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">)</span> <span class="k3">&amp;</span> <span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 149</span><span class="p">#endif /* DEBUG */</span>
<span class="number"> 150</span>
<span class="number"> 151</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"> 152</span>    <span class="k2">{</span>
<span class="number"> 153</span><span class="c">//        al_show_native_message_box(display, "Error", "Error", "Fallo al inita5 !", NULL, ALLEGRO_MESSAGEBOX_ERROR);</span>
<span class="number"> 154</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"no carga init5"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 155</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 156</span>    <span class="k2">}</span>
<span class="number"> 157</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</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="k2">)</span>
<span class="number"> 158</span>    <span class="k2">{</span>
<span class="number"> 159</span><span class="c">//        al_show_native_message_box(display, "Error", "Error", "Fallo al inicializar audio!", NULL, ALLEGRO_MESSAGEBOX_ERROR);</span>
<span class="number"> 160</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"no carga init5"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 161</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 162</span>    <span class="k2">}</span>
<span class="number"> 163</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</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="k2">)</span>
<span class="number"> 164</span>    <span class="k2">{</span>
<span class="number"> 165</span><span class="c">//        al_show_native_message_box(display, "Error", "Error", "Fallo al inicializar acodec addon!", NULL, ALLEGRO_MESSAGEBOX_ERROR);</span>
<span class="number"> 166</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"no carga init5"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 167</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 168</span>    <span class="k2">}</span>
<span class="number"> 169</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</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">1</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 170</span>    <span class="k2">{</span>
<span class="number"> 171</span><span class="c">//        al_show_native_message_box(display, "Error", "Error", "Fallo al inicializar reserve samples!", NULL, ALLEGRO_MESSAGEBOX_ERROR);</span>
<span class="number"> 172</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"no carga init5"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 173</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 174</span>    <span class="k2">}</span>
<span class="number"> 175</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"> 176</span>    <span class="k2">{</span>
<span class="number"> 177</span><span class="c">//        al_show_native_message_box(display, "Error", "Error", "Fallo al inicializar mouse!", NULL, ALLEGRO_MESSAGEBOX_ERROR);</span>
<span class="number"> 178</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"no carga init5"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 179</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 180</span>    <span class="k2">}</span>
<span class="number"> 181</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"> 182</span>    <span class="k2">{</span>
<span class="number"> 183</span><span class="c">//        al_show_native_message_box(display, "Error", "Error", "Fallo al inicializar teclado!", NULL, ALLEGRO_MESSAGEBOX_ERROR);</span>
<span class="number"> 184</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"no carga init5"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 185</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 186</span>    <span class="k2">}</span>
<span class="number"> 187</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>al_init_video_addon<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 188</span>    <span class="k2">{</span>
<span class="number"> 189</span><span class="c">//        al_show_native_message_box(display, "Error", "Error", "Fallo al inicializar vid addon!", NULL, ALLEGRO_MESSAGEBOX_ERROR);</span>
<span class="number"> 190</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"no carga init5"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 191</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 192</span>    <span class="k2">}</span>
<span class="number"> 193</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_primitives_addon"><span class="a">al_init_primitives_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 194</span>    <span class="k2">{</span>
<span class="number"> 195</span><span class="c">//        al_show_native_message_box(display, "Error", "Error", "Fallo al inicializar prim addon!", NULL, ALLEGRO_MESSAGEBOX_ERROR);</span>
<span class="number"> 196</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"no carga init5"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 197</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 198</span>    <span class="k2">}</span>
<span class="number"> 199</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_font_addon"><span class="a">al_init_font_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 200</span>    <span class="k2">{</span>
<span class="number"> 201</span><span class="c">//        al_show_native_message_box(display, "Error", "Error", "Fallo al inicializar font addon!", NULL, ALLEGRO_MESSAGEBOX_ERROR);</span>
<span class="number"> 202</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"no carga init5"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 203</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 204</span>    <span class="k2">}</span>
<span class="number"> 205</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_ttf_addon"><span class="a">al_init_ttf_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 206</span>    <span class="k2">{</span>
<span class="number"> 207</span><span class="c">//        al_show_native_message_box(display, "Error", "Error", "Fallo al inicializar ttf addon!", NULL, ALLEGRO_MESSAGEBOX_ERROR);</span>
<span class="number"> 208</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"no carga init5"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 209</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 210</span>    <span class="k2">}</span>
<span class="number"> 211</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"> 212</span>    <span class="k2">{</span>
<span class="number"> 213</span><span class="c">//        al_show_native_message_box(display, "Error", "Error", "Fallo al inicializar img addon!", NULL, ALLEGRO_MESSAGEBOX_ERROR);</span>
<span class="number"> 214</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"no carga init5"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 215</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 216</span>    <span class="k2">}</span>
<span class="number"> 217</span><span class="k2">}</span>
<span class="number"> 218</span>
<span class="number"> 219</span><span class="k1">void</span> shutdown<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 220</span><span class="k2">{</span>
<span class="number"> 221</span>    <a href="http://www.allegro.cc/manual/al_shutdown_ttf_addon"><span class="a">al_shutdown_ttf_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 222</span>    <a href="http://www.allegro.cc/manual/al_shutdown_font_addon"><span class="a">al_shutdown_font_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 223</span>    <a href="http://www.allegro.cc/manual/al_shutdown_primitives_addon"><span class="a">al_shutdown_primitives_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 224</span>    <a href="http://www.allegro.cc/manual/al_uninstall_keyboard"><span class="a">al_uninstall_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 225</span>    <a href="http://www.allegro.cc/manual/al_uninstall_mouse"><span class="a">al_uninstall_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 226</span>    <a href="http://www.allegro.cc/manual/al_uninstall_audio"><span class="a">al_uninstall_audio</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 227</span><span class="k2">}</span>
<span class="number"> 228</span>
<span class="number"> 229</span><span class="k1">bool</span> captura<span class="k2">(</span><span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> width, <span class="k1">int</span> height, <span class="k1">char</span> <span class="k3">*</span>filename<span class="k2">)</span>
<span class="number"> 230</span><span class="k2">{</span>
<span class="number"> 231</span><span class="c">// get a DC compat. w/ the screen</span>
<span class="number"> 232</span>    HDC hDc <span class="k3">=</span> CreateCompatibleDC<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 233</span>
<span class="number"> 234</span><span class="c">// make a bmp in memory to store the capture in</span>
<span class="number"> 235</span>    HBITMAP hBmp <span class="k3">=</span> CreateCompatibleBitmap<span class="k2">(</span>GetDC<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>, width, height<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 236</span>
<span class="number"> 237</span><span class="c">// join em up</span>
<span class="number"> 238</span>    SelectObject<span class="k2">(</span>hDc, hBmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 239</span>
<span class="number"> 240</span><span class="c">// copy from the screen to my bitmap</span>
<span class="number"> 241</span>    BitBlt<span class="k2">(</span>hDc, <span class="n">0</span>, <span class="n">0</span>, width, height, GetDC<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>, x, y, SRCCOPY<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 242</span>
<span class="number"> 243</span><span class="c">// save my bitmap</span>
<span class="number"> 244</span>    <span class="k1">bool</span> ret <span class="k3">=</span> SaveBMPFile<span class="k2">(</span>filename, hBmp, hDc, width, height<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 245</span>
<span class="number"> 246</span><span class="c">// free the bitmap memory</span>
<span class="number"> 247</span>    DeleteObject<span class="k2">(</span>hBmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 248</span>
<span class="number"> 249</span>    <span class="k1">return</span> ret<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="k1">extern</span> <span class="k1">bool</span> SaveBMPFile<span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span>filename, HBITMAP bitmap, HDC bitmapDC, <span class="k1">int</span> width, <span class="k1">int</span> height<span class="k2">)</span>
<span class="number"> 253</span><span class="k2">{</span>
<span class="number"> 254</span>    <span class="k1">bool</span> Success<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span>
<span class="number"> 255</span>    HDC SurfDC<span class="k3">=</span>NULL<span class="k2">;</span>        <span class="c">// GDI-compatible device context for the surface</span>
<span class="number"> 256</span>    HBITMAP OffscrBmp<span class="k3">=</span>NULL<span class="k2">;</span> <span class="c">// bitmap that is converted to a DIB</span>
<span class="number"> 257</span>    HDC OffscrDC<span class="k3">=</span>NULL<span class="k2">;</span>      <span class="c">// offscreen DC that we can select OffscrBmp into</span>
<span class="number"> 258</span>    LPBITMAPINFO lpbi<span class="k3">=</span>NULL<span class="k2">;</span> <span class="c">// bitmap format info; used by GetDIBits</span>
<span class="number"> 259</span>    LPVOID lpvBits<span class="k3">=</span>NULL<span class="k2">;</span>    <span class="c">// pointer to bitmap bits array</span>
<span class="number"> 260</span>    HANDLE BmpFile<span class="k3">=</span>INVALID_HANDLE_VALUE<span class="k2">;</span>    <span class="c">// destination .bmp file</span>
<span class="number"> 261</span>    BITMAPFILEHEADER bmfh<span class="k2">;</span>  <span class="c">// .bmp file header</span>
<span class="number"> 262</span>
<span class="number"> 263</span>    <span class="c">// We need an HBITMAP to convert it to a DIB:</span>
<span class="number"> 264</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>OffscrBmp <span class="k3">=</span> CreateCompatibleBitmap<span class="k2">(</span>bitmapDC, width, height<span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 265</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 266</span>
<span class="number"> 267</span>    <span class="c">// The bitmap is empty, so let's copy the contents of the surface to it.</span>
<span class="number"> 268</span>    <span class="c">// For that we need to select it into a device context. We create one.</span>
<span class="number"> 269</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>OffscrDC <span class="k3">=</span> CreateCompatibleDC<span class="k2">(</span>bitmapDC<span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 270</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 271</span>
<span class="number"> 272</span>    <span class="c">// Select OffscrBmp into OffscrDC:</span>
<span class="number"> 273</span>    HBITMAP OldBmp <span class="k3">=</span> <span class="k2">(</span>HBITMAP<span class="k2">)</span>SelectObject<span class="k2">(</span>OffscrDC, OffscrBmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 274</span>
<span class="number"> 275</span>    <span class="c">// Now we can copy the contents of the surface to the offscreen bitmap:</span>
<span class="number"> 276</span>    BitBlt<span class="k2">(</span>OffscrDC, <span class="n">0</span>, <span class="n">0</span>, width, height, bitmapDC, <span class="n">0</span>, <span class="n">0</span>, SRCCOPY<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 277</span>
<span class="number"> 278</span>    <span class="c">// GetDIBits requires format info about the bitmap. We can have GetDIBits</span>
<span class="number"> 279</span>    <span class="c">// fill a structure with that info if we pass a NULL pointer for lpvBits:</span>
<span class="number"> 280</span>    <span class="c">// Reserve memory for bitmap info (BITMAPINFOHEADER + largest possible</span>
<span class="number"> 281</span>    <span class="c">// palette):</span>
<span class="number"> 282</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>lpbi <span class="k3">=</span> <span class="k2">(</span>LPBITMAPINFO<span class="k2">)</span><span class="k2">(</span><span class="k1">new</span> <span class="k1">char</span><span class="k2">[</span><span class="k1">sizeof</span><span class="k2">(</span>BITMAPINFOHEADER<span class="k2">)</span> <span class="k3">+</span> <span class="n">256</span> <span class="k3">*</span> <span class="k1">sizeof</span><span class="k2">(</span>RGBQUAD<span class="k2">)</span><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"> 283</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 284</span>
<span class="number"> 285</span>
<span class="number"> 286</span>    ZeroMemory<span class="k2">(</span><span class="k3">&amp;</span>lpbi-&gt;bmiHeader, <span class="k1">sizeof</span><span class="k2">(</span>BITMAPINFOHEADER<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 287</span>    lpbi-&gt;bmiHeader.biSize <span class="k3">=</span> <span class="k1">sizeof</span><span class="k2">(</span>BITMAPINFOHEADER<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 288</span>    <span class="c">// Get info but first de-select OffscrBmp because GetDIBits requires it:</span>
<span class="number"> 289</span>    SelectObject<span class="k2">(</span>OffscrDC, OldBmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 290</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>GetDIBits<span class="k2">(</span>OffscrDC, OffscrBmp, <span class="n">0</span>, height, NULL, lpbi, DIB_RGB_COLORS<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 291</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 292</span>
<span class="number"> 293</span>    <span class="c">// Reserve memory for bitmap bits:</span>
<span class="number"> 294</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>lpvBits <span class="k3">=</span> <span class="k1">new</span> <span class="k1">char</span><span class="k2">[</span>lpbi-&gt;bmiHeader.biSizeImage<span class="k2">]</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 295</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 296</span>
<span class="number"> 297</span>    <span class="c">// Have GetDIBits convert OffscrBmp to a DIB (device-independent bitmap):</span>
<span class="number"> 298</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>GetDIBits<span class="k2">(</span>OffscrDC, OffscrBmp, <span class="n">0</span>, height, lpvBits, lpbi, DIB_RGB_COLORS<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 299</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 300</span>
<span class="number"> 301</span>    <span class="c">// Create a file to save the DIB to:</span>
<span class="number"> 302</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>BmpFile <span class="k3">=</span> CreateFile<span class="k2">(</span>filename,
<span class="number"> 303</span>                              GENERIC_WRITE,
<span class="number"> 304</span>                              <span class="n">0</span>, NULL,
<span class="number"> 305</span>                              CREATE_ALWAYS,
<span class="number"> 306</span>                              FILE_ATTRIBUTE_NORMAL,
<span class="number"> 307</span>                              NULL<span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> INVALID_HANDLE_VALUE<span class="k2">)</span>
<span class="number"> 308</span>
<span class="number"> 309</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 310</span>
<span class="number"> 311</span>    DWORD Written<span class="k2">;</span>    <span class="c">// number of bytes written by WriteFile</span>
<span class="number"> 312</span>
<span class="number"> 313</span>    <span class="c">// Write a file header to the file:</span>
<span class="number"> 314</span>    bmfh.bfType <span class="k3">=</span> <span class="n">19778</span><span class="k2">;</span>        <span class="c">// 'BM'</span>
<span class="number"> 315</span>    <span class="c">// bmfh.bfSize = ???        // we'll write that later</span>
<span class="number"> 316</span>    bmfh.bfReserved1 <span class="k3">=</span> bmfh.bfReserved2 <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 317</span>    <span class="c">// bmfh.bfOffBits = ???     // we'll write that later</span>
<span class="number"> 318</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>WriteFile<span class="k2">(</span>BmpFile, <span class="k3">&amp;</span>bmfh, <span class="k1">sizeof</span><span class="k2">(</span>bmfh<span class="k2">)</span>, <span class="k3">&amp;</span>Written, NULL<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 319</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 320</span>
<span class="number"> 321</span>    <span class="k1">if</span> <span class="k2">(</span>Written <span class="k3">&lt;</span> <span class="k1">sizeof</span><span class="k2">(</span>bmfh<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 322</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 323</span>
<span class="number"> 324</span>    <span class="c">// Write BITMAPINFOHEADER to the file:</span>
<span class="number"> 325</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>WriteFile<span class="k2">(</span>BmpFile, <span class="k3">&amp;</span>lpbi-&gt;bmiHeader, <span class="k1">sizeof</span><span class="k2">(</span>BITMAPINFOHEADER<span class="k2">)</span>, <span class="k3">&amp;</span>Written, NULL<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 326</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 327</span>
<span class="number"> 328</span>    <span class="k1">if</span> <span class="k2">(</span>Written <span class="k3">&lt;</span> <span class="k1">sizeof</span><span class="k2">(</span>BITMAPINFOHEADER<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 329</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 330</span>
<span class="number"> 331</span>    <span class="c">// Calculate size of palette:</span>
<span class="number"> 332</span>    <span class="k1">int</span> PalEntries<span class="k2">;</span>
<span class="number"> 333</span>    <span class="c">// 16-bit or 32-bit bitmaps require bit masks:</span>
<span class="number"> 334</span>    <span class="k1">if</span> <span class="k2">(</span>lpbi-&gt;bmiHeader.biCompression <span class="k3">=</span><span class="k3">=</span> BI_BITFIELDS<span class="k2">)</span>
<span class="number"> 335</span>        PalEntries <span class="k3">=</span> <span class="n">3</span><span class="k2">;</span>
<span class="number"> 336</span>    <span class="k1">else</span>
<span class="number"> 337</span>        <span class="c">// bitmap is palettized?</span>
<span class="number"> 338</span>        PalEntries <span class="k3">=</span> <span class="k2">(</span>lpbi-&gt;bmiHeader.biBitCount <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">8</span><span class="k2">)</span> ?
<span class="number"> 339</span>                     <span class="c">// 2^biBitCount palette entries max.:</span>
<span class="number"> 340</span>                     <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">(</span><span class="n">1</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> lpbi-&gt;bmiHeader.biBitCount<span class="k2">)</span>
<span class="number"> 341</span>                     <span class="c">// bitmap is TrueColor -&gt; no palette:</span>
<span class="number"> 342</span>                     <span class="k2">:</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 343</span>    <span class="c">// If biClrUsed use only biClrUsed palette entries:</span>
<span class="number"> 344</span>    <span class="k1">if</span><span class="k2">(</span>lpbi-&gt;bmiHeader.biClrUsed<span class="k2">)</span>
<span class="number"> 345</span>        PalEntries <span class="k3">=</span> lpbi-&gt;bmiHeader.biClrUsed<span class="k2">;</span>
<span class="number"> 346</span>
<span class="number"> 347</span>    <span class="c">// Write palette to the file:</span>
<span class="number"> 348</span>    <span class="k1">if</span><span class="k2">(</span>PalEntries<span class="k2">)</span>
<span class="number"> 349</span>    <span class="k2">{</span>
<span class="number"> 350</span>        <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>WriteFile<span class="k2">(</span>BmpFile, <span class="k3">&amp;</span>lpbi-&gt;bmiColors, PalEntries <span class="k3">*</span> <span class="k1">sizeof</span><span class="k2">(</span>RGBQUAD<span class="k2">)</span>, <span class="k3">&amp;</span>Written, NULL<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 351</span>            <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 352</span>
<span class="number"> 353</span>        <span class="k1">if</span> <span class="k2">(</span>Written <span class="k3">&lt;</span> PalEntries <span class="k3">*</span> <span class="k1">sizeof</span><span class="k2">(</span>RGBQUAD<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 354</span>            <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 355</span>    <span class="k2">}</span>
<span class="number"> 356</span>
<span class="number"> 357</span>    <span class="c">// The current position in the file (at the beginning of the bitmap bits)</span>
<span class="number"> 358</span>    <span class="c">// will be saved to the BITMAPFILEHEADER:</span>
<span class="number"> 359</span>    bmfh.bfOffBits <span class="k3">=</span> GetFilePointer<span class="k2">(</span>BmpFile<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 360</span>
<span class="number"> 361</span>    <span class="c">// Write bitmap bits to the file:</span>
<span class="number"> 362</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>WriteFile<span class="k2">(</span>BmpFile, lpvBits, lpbi-&gt;bmiHeader.biSizeImage, <span class="k3">&amp;</span>Written, NULL<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 363</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 364</span>
<span class="number"> 365</span>    <span class="k1">if</span> <span class="k2">(</span>Written <span class="k3">&lt;</span> lpbi-&gt;bmiHeader.biSizeImage<span class="k2">)</span>
<span class="number"> 366</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 367</span>
<span class="number"> 368</span>    <span class="c">// The current pos. in the file is the final file size and will be saved:</span>
<span class="number"> 369</span>    bmfh.bfSize <span class="k3">=</span> GetFilePointer<span class="k2">(</span>BmpFile<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 370</span>
<span class="number"> 371</span>    <span class="c">// We have all the info for the file header. Save the updated version:</span>
<span class="number"> 372</span>    SetFilePointer<span class="k2">(</span>BmpFile, <span class="n">0</span>, <span class="n">0</span>, FILE_BEGIN<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 373</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>WriteFile<span class="k2">(</span>BmpFile, <span class="k3">&amp;</span>bmfh, <span class="k1">sizeof</span><span class="k2">(</span>bmfh<span class="k2">)</span>, <span class="k3">&amp;</span>Written, NULL<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 374</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 375</span>
<span class="number"> 376</span>    <span class="k1">if</span> <span class="k2">(</span>Written <span class="k3">&lt;</span> <span class="k1">sizeof</span><span class="k2">(</span>bmfh<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 377</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 378</span>    <span class="k1">delete</span><span class="k2">[</span><span class="k2">]</span> lpvBits<span class="k2">;</span>
<span class="number"> 379</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 380</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AramisL)</author>
		<pubDate>Sat, 03 Feb 2018 11:15:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Don&#39;t destroy the &#39;bitmap&#39; that al_get_video_frame returns. Allegro owns it.</p><p>Why split render and redraw into two separate clauses? They should really be the same thing.</p><p>You don&#39;t need to &#39;rest&#39; after displaying the bitmap. Your timer event tells you when to redraw. Did ALLEGRO_EVENT_VIDEO_FRAME_SHOW not work for you?</p><p>Also, I hate to tell you, but allegro can save .bmp files directly from an ALLEGRO_BITMAP*.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 04 Feb 2018 03:15:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi! I&#39;ll re-write all the code, so, after follow some adviced from Reynaldo now I can play the full video.  <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /><img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /><img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /></p><p>I don´t understand what is ALLEGRO_EVENT_VIDEO_FRAME_SHOW, and how can help me yet, I´ll seek more info.</p><p>The bitmap I save is one screenshot I make BEFORE the display (and that part of code I didnt show it). I searched something similar in Allegro-lib but I couldnt find it.</p><p><img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AramisL)</author>
		<pubDate>Sun, 04 Feb 2018 12:46:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Oh, in that case carry on. Taking a screenshot is only possible with native code. But if you have an ALLEGRO_BITMAP*, you can save it as an image file, based on the extension.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 07 Feb 2018 02:15:47 +0000</pubDate>
	</item>
</rss>
