<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title> [a5] Memory Management -Bitmaps part 2</title>
		<link>http://www.allegro.cc/forums/view/607248</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 09 May 2011 08:23:23 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>So <a href="http://www.allegro.cc/forums/thread/607095">I thought I was correctly freeing bitmaps</a> ....but:</p><p><span class="remote-thumbnail"><span class="json">{"name":"check.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/c\/2c0587a4cf1c1d6a979121d0c1e7eb3c.png","w":400,"h":127,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/c\/2c0587a4cf1c1d6a979121d0c1e7eb3c"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/2/c/2c0587a4cf1c1d6a979121d0c1e7eb3c-240.jpg" alt="check.png" width="240" height="76" /></span></p><p>The example below is a &quot;book reader&quot; for my kids. The idea is it loads the images and eventually the audio streams for each page. I know the resolution is a bit big (1442, 1024), but I thought it would be fine with reusing the bitmap, freeing the bitmap once done, and then recycling the bitmap for the next image.</p><p>Everytime I change the page 20-30 MB of RAM is used...</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;stdlib.h&gt;</span>
<span class="number">   3</span><span class="p">#include "allegro5/allegro.h"</span>
<span class="number">   4</span><span class="p">#include "allegro5/allegro_image.h"</span>
<span class="number">   5</span><span class="p">#include "allegro5/allegro_audio.h"</span>
<span class="number">   6</span><span class="p">#include "allegro5/allegro_acodec.h"</span>
<span class="number">   7</span><span class="p">#include "allegro5/allegro_font.h"</span>
<span class="number">   8</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number">   9</span>
<span class="number">  10</span><span class="c">//#include "common.c"</span>
<span class="number">  11</span>
<span class="number">  12</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  13</span><span class="c">//------------------------------------------//</span>
<span class="number">  14</span><span class="c">//              VARIABLES</span>
<span class="number">  15</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">;</span>
<span class="number">  16</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>membitmap, <span class="k3">*</span>bg<span class="k2">;</span><span class="c">//, *bitmap;</span>
<span class="number">  17</span>
<span class="number">  18</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer<span class="k2">;</span>
<span class="number">  19</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>queue<span class="k2">;</span>
<span class="number">  20</span>    <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  21</span>    <span class="k1">bool</span> runthisgame<span class="k3">=</span><span class="n">1</span><span class="k2">;</span> <span class="c">//keeps the while loop alive</span>
<span class="number">  22</span>    <span class="k1">int</span> counter_sixtith_sec<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  23</span>    <span class="k1">int</span> page_num<span class="k3">=</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  24</span>    <span class="k1">bool</span> page_printed<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  25</span>    <span class="k1">bool</span> song_started<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  26</span><span class="c">//------------------------------------------//</span>
<span class="number">  27</span>
<span class="number">  28</span>
<span class="number">  29</span>
<span class="number">  30</span><span class="c">//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//</span>
<span class="number">  31</span><span class="c">//                 Allegro Bootup</span>
<span class="number">  32</span><span class="c">//Return if allegro cannot start</span>
<span class="number">  33</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  34</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nCould not init Allegro.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  35</span>      <span class="c">// abort_example("Could not init Allegro.\n");</span>
<span class="number">  36</span>    <span class="k2">}</span>
<span class="number">  37</span><span class="c">//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//</span>
<span class="number">  38</span>
<span class="number">  39</span>
<span class="number">  40</span><span class="c">//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//</span>
<span class="number">  41</span><span class="c">//                  I/O Devices Installation</span>
<span class="number">  42</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">  43</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">  44</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">  45</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">  46</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">  47</span><span class="c">//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//</span>
<span class="number">  48</span>
<span class="number">  49</span>
<span class="number">  50</span><span class="c">//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//</span>
<span class="number">  51</span><span class="c">//                  Display Creation</span>
<span class="number">  52</span>
<span class="number">  53</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">1442</span>, <span class="n">1024</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  54</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  55</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Error creating display\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</span>       <span class="c">//abort_example("Error creating display\n");</span>
<span class="number">  57</span>    <span class="k2">}</span>
<span class="number">  58</span>
<span class="number">  59</span>    <a href="http://www.allegro.cc/manual/al_set_window_title"><span class="a">al_set_window_title</span></a><span class="k2">(</span>display, <span class="s">"How the Gecko Lost His Tail"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  60</span><span class="c">//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//</span>
<span class="number">  61</span>
<span class="number">  62</span>
<span class="number">  63</span><span class="c">//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//</span>
<span class="number">  64</span><span class="c">//                  Audio Function Variables</span>
<span class="number">  65</span><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a> <span class="k3">*</span>sample<span class="k2">;</span>
<span class="number">  66</span><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE_INSTANCE"><span class="a">ALLEGRO_SAMPLE_INSTANCE</span></a> <span class="k3">*</span>sample_inst<span class="k2">;</span>
<span class="number">  67</span>
<span class="number">  68</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">  69</span>
<span class="number">  70</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="k2">{</span>
<span class="number">  71</span>      <span class="c">//abort_example("Could not init sound!\n");</span>
<span class="number">  72</span>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  73</span>   <span class="k2">}</span>
<span class="number">  74</span>
<span class="number">  75</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="k2">{</span>
<span class="number">  76</span>      <span class="c">//abort_example("Could not set up voice and mixer.\n");</span>
<span class="number">  77</span>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  78</span>   <span class="k2">}</span>
<span class="number">  79</span>
<span class="number">  80</span>   sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music/01_loadsong.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  81</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>sample<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  82</span>      <span class="c">//abort_example("Could not load sample from '%s'!\n", argv[1]);</span>
<span class="number">  83</span>   <span class="k2">}</span>
<span class="number">  84</span>
<span class="number">  85</span>      <span class="c">/* Loop the sample. */</span>
<span class="number">  86</span>   <span class="c">//sample_inst = al_create_sample_instance(sample);</span>
<span class="number">  87</span>   sample_inst <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_sample_instance"><span class="a">al_create_sample_instance</span></a><span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>   <a href="http://www.allegro.cc/manual/al_set_sample_instance_playmode"><span class="a">al_set_sample_instance_playmode</span></a><span class="k2">(</span>sample_inst, ALLEGRO_PLAYMODE_LOOP<span class="k2">)</span><span class="k2">;</span>
<span class="number">  89</span>   <a href="http://www.allegro.cc/manual/al_attach_sample_instance_to_mixer"><span class="a">al_attach_sample_instance_to_mixer</span></a><span class="k2">(</span>sample_inst, <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">  90</span>
<span class="number">  91</span><span class="c">//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//</span>
<span class="number">  92</span>
<span class="number">  93</span>
<span class="number">  94</span><span class="c">//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//</span>
<span class="number">  95</span><span class="c">//                  Timer Function Variables</span>
<span class="number">  96</span>    timer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">0</span> <span class="k3">/</span> <span class="n">60</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//60 FPS</span>
<span class="number">  97</span>    queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  98</span>    <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  99</span>    <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>    <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>    <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 102</span><span class="c">//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//</span>
<span class="number"> 103</span>
<span class="number"> 104</span><span class="c">//-------------------------------------------------------------//</span>
<span class="number"> 105</span><span class="c">//                  First BITMAP</span>
<span class="number"> 106</span>
<span class="number"> 107</span>    <a href="http://www.allegro.cc/manual/al_set_new_bitmap_flags"><span class="a">al_set_new_bitmap_flags</span></a><span class="k2">(</span>ALLEGRO_MEMORY_BITMAP<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 108</span>    membitmap <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"images/01.jpg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 109</span>    <a href="http://www.allegro.cc/manual/al_set_new_bitmap_flags"><span class="a">al_set_new_bitmap_flags</span></a><span class="k2">(</span>ALLEGRO_VIDEO_BITMAP<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 110</span>    bg <span class="k3">=</span><a href="http://www.allegro.cc/manual/al_clone_bitmap"><span class="a">al_clone_bitmap</span></a><span class="k2">(</span>membitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 111</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>membitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 112</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>bg<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 113</span><span class="c">//-------------------------------------------------------------//</span>
<span class="number"> 114</span>
<span class="number"> 115</span><span class="c">///-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~///</span>
<span class="number"> 116</span><span class="c">///                  THE MAGIC WHILE LOOP</span>
<span class="number"> 117</span><span class="c">/// Here's the start of the execution of the game</span>
<span class="number"> 118</span>    <span class="k1">while</span> <span class="k2">(</span>runthisgame<span class="k3">=</span><span class="k3">=</span><span class="n">1</span><span class="k2">)</span><span class="k2">{</span><span class="c">//runthisgame) {</span>
<span class="number"> 119</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"> 120</span>        <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>queue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 121</span>
<span class="number"> 122</span>        <span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span><span class="k2">{</span> <span class="c">//User closes the window</span>
<span class="number"> 123</span>            runthisgame<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 124</span>        <span class="k2">}</span>
<span class="number"> 125</span>        <span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_CHAR<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 126</span>            <span class="k1">if</span> <span class="k2">(</span>event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 127</span>                runthisgame<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 128</span>            <span class="k2">}</span>
<span class="number"> 129</span>            <span class="k1">if</span> <span class="k2">(</span>event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_LEFT<span class="k2">)</span><span class="k2">{</span><span class="c">//Previous Page</span>
<span class="number"> 130</span>                <span class="k1">if</span><span class="k2">(</span>page_num&gt;1<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 131</span>                    page_num--<span class="k2">;</span>page_printed<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>song_started<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 132</span>                    <span class="c">//al_destroy_sample_instance(sample_inst);</span>
<span class="number"> 133</span>                    <span class="c">//al_destroy_sample(sample);</span>
<span class="number"> 134</span>
<span class="number"> 135</span>                <span class="k2">}</span>
<span class="number"> 136</span>            <span class="k2">}</span>
<span class="number"> 137</span>            <span class="k1">if</span> <span class="k2">(</span>event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_RIGHT<span class="k3">|</span><span class="k3">|</span>event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_SPACE<span class="k2">)</span><span class="k2">{</span><span class="c">//Next Page</span>
<span class="number"> 138</span>                <span class="k1">if</span><span class="k2">(</span>page_num<span class="k3">&lt;</span><span class="n">18</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 139</span>                    page_num<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>page_printed<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>song_started<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 140</span>                    <a href="http://www.allegro.cc/manual/al_destroy_sample_instance"><span class="a">al_destroy_sample_instance</span></a><span class="k2">(</span>sample_inst<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 141</span>                    <span class="c">//al_destroy_sample(sample);</span>
<span class="number"> 142</span>                <span class="k2">}</span>
<span class="number"> 143</span>
<span class="number"> 144</span>                <span class="k2">}</span>
<span class="number"> 145</span>            <span class="k2">}</span>
<span class="number"> 146</span>            <span class="c">//</span>
<span class="number"> 147</span>        <span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span>
<span class="number"> 148</span>            redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 149</span>
<span class="number"> 150</span>        <span class="k1">if</span> <span class="k2">(</span>redraw <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>queue<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 151</span>            redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 152</span>            <span class="c">///---MORE MAGIC---///</span>
<span class="number"> 153</span>            <span class="k1">switch</span><span class="k2">(</span>page_num<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 154</span>                <span class="k1">case</span> <span class="n">1</span><span class="k2">:</span>
<span class="number"> 155</span>                    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>page_printed<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 156</span>                    <span class="c">///IMAGE</span>
<span class="number"> 157</span>                        membitmap <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"images/01.jpg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 158</span>                       <span class="c">// //al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP);</span>
<span class="number"> 159</span>                        bg <span class="k3">=</span><a href="http://www.allegro.cc/manual/al_clone_bitmap"><span class="a">al_clone_bitmap</span></a><span class="k2">(</span>membitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 160</span>                        <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>membitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 161</span>                        <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bg,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 162</span>                        <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>bg<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 163</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"> 164</span>                    <span class="c">///SOUND</span>
<span class="number"> 165</span>                        <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>song_started<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 166</span>                            <span class="c">//al_stop_sample_instance(sample_inst);</span>
<span class="number"> 167</span>                            <a href="http://www.allegro.cc/manual/al_set_sample"><span class="a">al_set_sample</span></a><span class="k2">(</span>sample_inst, <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music/01_TitleSong.ogg"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 168</span>                            <a href="http://www.allegro.cc/manual/al_play_sample_instance"><span class="a">al_play_sample_instance</span></a><span class="k2">(</span>sample_inst<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 169</span>                            song_started<span class="k3">=</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 170</span>                        <span class="k2">}</span>
<span class="number"> 171</span>                        page_printed<span class="k3">=</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 172</span>                    <span class="k2">}</span>
<span class="number"> 173</span>                    <span class="k1">if</span><span class="k2">(</span>counter_sixtith_sec<span class="k3">=</span><span class="k3">=</span><span class="n">60</span><span class="k3">*</span><span class="n">228</span><span class="k2">)</span><span class="k2">{</span> <span class="c">//counter*60== seconds comapre to 228 --&gt;title song is 228 secs (3mins 48sec) long</span>
<span class="number"> 174</span>                        page_num<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span> <span class="c">//auto go to next page</span>
<span class="number"> 175</span>                    <span class="k2">}</span>
<span class="number"> 176</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 177</span>
<span class="number"> 178</span>                       .
<span class="number"> 179</span>                       .
<span class="number"> 180</span>                       .
<span class="number"> 181</span>
<span class="number"> 182</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 183</span>                <span class="k1">case</span> <span class="n">18</span><span class="k2">:</span>
<span class="number"> 184</span>                    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>page_printed<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 185</span>                    <span class="c">///IMAGE</span>
<span class="number"> 186</span>                        membitmap <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"images/18.jpg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 187</span>                        <span class="c">//al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP);</span>
<span class="number"> 188</span>                        bg <span class="k3">=</span><a href="http://www.allegro.cc/manual/al_clone_bitmap"><span class="a">al_clone_bitmap</span></a><span class="k2">(</span>membitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 189</span>                        <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>membitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 190</span>                        <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bg,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 191</span>                        <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>bg<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 192</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"> 193</span>                    <span class="c">///SOUND</span>
<span class="number"> 194</span>                        <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>song_started<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 195</span>                            <a href="http://www.allegro.cc/manual/al_stop_sample_instance"><span class="a">al_stop_sample_instance</span></a><span class="k2">(</span>sample_inst<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 196</span>                            <a href="http://www.allegro.cc/manual/al_set_sample"><span class="a">al_set_sample</span></a><span class="k2">(</span>sample_inst, <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music/01_TitleSong.ogg"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 197</span>                            <a href="http://www.allegro.cc/manual/al_play_sample_instance"><span class="a">al_play_sample_instance</span></a><span class="k2">(</span>sample_inst<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 198</span>                            song_started<span class="k3">=</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 199</span>                        <span class="k2">}</span>
<span class="number"> 200</span>                        page_printed<span class="k3">=</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 201</span>                    <span class="k2">}</span>
<span class="number"> 202</span>                    <span class="k1">if</span><span class="k2">(</span>counter_sixtith_sec<span class="k3">=</span><span class="k3">=</span><span class="n">60</span><span class="k3">*</span><span class="n">228</span><span class="k2">)</span><span class="k2">{</span> <span class="c">//counter*60== seconds comapre to 228 --&gt;title song is 228 secs (3mins 48sec) long</span>
<span class="number"> 203</span>                        page_num<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span> <span class="c">//auto go to next page</span>
<span class="number"> 204</span>                    <span class="k2">}</span>
<span class="number"> 205</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 206</span>
<span class="number"> 207</span>                default:
<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">"\nDANGER WILL ROBINSON!!!!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 209</span>            <span class="k2">}</span>
<span class="number"> 210</span>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nCounter(%i) Page_num(%i), Page_Printed(%i)"</span>,counter_sixtith_sec,page_num,page_printed<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 211</span>            counter_sixtith_sec<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 212</span>
<span class="number"> 213</span>        <span class="k2">}</span>
<span class="number"> 214</span>
<span class="number"> 215</span>            <span class="c">///----------------///</span>
<span class="number"> 216</span>
<span class="number"> 217</span>    <span class="k2">}</span>
<span class="number"> 218</span><span class="c">///-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~///</span>
<span class="number"> 219</span>
<span class="number"> 220</span>
<span class="number"> 221</span>    <span class="c">//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//</span>
<span class="number"> 222</span>    <span class="c">//                  DATA DESTRUCTION</span>
<span class="number"> 223</span>    <span class="c">//BITMAP *black, *powered, *PPlogo, *gimp, *presents, *menuscreen;</span>
<span class="number"> 224</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>bg<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 225</span>
<span class="number"> 226</span>    <a href="http://www.allegro.cc/manual/al_destroy_sample_instance"><span class="a">al_destroy_sample_instance</span></a><span class="k2">(</span>sample_inst<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 227</span>    <a href="http://www.allegro.cc/manual/al_destroy_sample"><span class="a">al_destroy_sample</span></a><span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 228</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"> 229</span>    <span class="c">//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//</span>
<span class="number"> 230</span>
<span class="number"> 231</span>
<span class="number"> 232</span>
<span class="number"> 233</span>
<span class="number"> 234</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span> <span class="c">//Program Completed Successfully</span>
<span class="number"> 235</span>
<span class="number"> 236</span><span class="k2">}</span>
</div></div><p>


The kicker: The largest picture is only 414 KB...any thoughts to the memory issue?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Phrasz)</author>
		<pubDate>Sat, 07 May 2011 04:55:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You probably have to free the samples too, even if the docs don&#39;t say so.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (torhu)</author>
		<pubDate>Sat, 07 May 2011 06:18:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I was thinking that too since I haven&#39;t tested &quot;just&quot; the bitmaps.</p><p>I&#39;ll try commenting out the audio, check the results, and then play with the audio after.</p><p>UPDATE:<br />It is the audio. The game without the music will run ~23-24 MBs, and I see that the memory is freed.</p><p>Next question: How do I properly free audio? (looking at this <a href="http://www.allegro.cc/forums/thread/601120/824060">music post</a>)</p><p>UPDATE 2:<br /><a href="http://www.allegro.cc/forums/thread/606698">Maybe This will work</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Phrasz)</author>
		<pubDate>Sat, 07 May 2011 18:55:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I suppose that would be al_destroy_sample.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (torhu)</author>
		<pubDate>Sat, 07 May 2011 20:25:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/607248/916642#target">Phrasz</a> said:</div><div class="quote"><p>  al_set_sample(sample_inst, al_load_sample(&quot;music/01_TitleSong.ogg&quot;));
</p></div></div><p>That&#39;s not good.</p><p>Loading a sample uncompresses it into raw data. A 1 MB ogg file could be a 10MB sample when loaded. Furthermore, you are then attaching it to an instance and forgetting about it. So every time that line runs, you lose X MB... where X is the uncompressed size.</p><p>You don&#39;t need to even use sample instances if you simply want to play a clip:</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/al_reserve_samples"><span class="a">al_reserve_samples</span></a><span class="k2">(</span><span class="n">16</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// sets up a default mixer, and creates 16 sample instances that Allegro manages for you</span>

s <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music/01_TitleSong.ogg"</span><span class="k2">)</span>
<a href="http://www.allegro.cc/manual/al_play_sample"><span class="a">al_play_sample</span></a><span class="k2">(</span>s, ... <span class="k2">)</span><span class="k2">;</span>
<span class="c">// when finished:</span>
<a href="http://www.allegro.cc/manual/al_destroy_sample"><span class="a">al_destroy_sample</span></a><span class="k2">(</span>s<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

All that said, if you want to conserve space, just stream the ogg music with <span class="source-code"><a href="http://www.allegro.cc/manual/al_load_audio_stream"><span class="a">al_load_audio_stream</span></a><span class="k2">(</span><span class="k2">)</span></span>. That way it doesn&#39;t need to uncompress the entire thing at once. This works great for background music.</p><p>Samples should be used for playing sound effects.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sat, 07 May 2011 22:57:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for the response!</p><p>I&#39;ve been trying to get the files to stream, but do you know how I would stream multiple files at once?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Phrasz)</author>
		<pubDate>Sun, 08 May 2011 00:45:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Call the function on two different files...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sun, 08 May 2011 01:12:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Gracias... I also looked at the <a href="http://www.allegro.cc/manual/5/al_load_audio_stream#">ex_stream_file.c code</a></p><p>Now with the streams when I am done I use the al_destroy_audio_stream().<br />1)Would this need to be called before loading a new stream file for that same variable?<br />2)When it&#39;s called it will first call detach audio stream if the stream is in use...I assume this would stop the playing too?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Phrasz)</author>
		<pubDate>Sun, 08 May 2011 06:23:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><ol><li><p>Yes.
</p></li><li><p>Yes.
</p></li></ol></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sun, 08 May 2011 08:21:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks guys!</p><p>I now am able to keep the memory below 28 MBs!</p><p>As far as multiple streams (this is for a future reader) I just used two samples, and then am able to tie the streams to the mixer and detach them / destroy them as needed.</p><p>IE: Creation Functions
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="c">//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//</span>
<span class="number">  2</span><span class="c">//                  Audio Function Variables</span>
<span class="number">  3</span>
<span class="number">  4</span><a href="http://www.allegro.cc/manual/ALLEGRO_VOICE"><span class="a">ALLEGRO_VOICE</span></a><span class="k3">*</span> voice<span class="k2">;</span>
<span class="number">  5</span><a href="http://www.allegro.cc/manual/ALLEGRO_MIXER"><span class="a">ALLEGRO_MIXER</span></a><span class="k3">*</span> mixer<span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</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">  8</span>
<span class="number">  9</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="k2">{</span>
<span class="number"> 10</span>      <span class="c">//abort_example("Could not init sound!\n");</span>
<span class="number"> 11</span>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 12</span>   <span class="k2">}</span>
<span class="number"> 13</span>
<span class="number"> 14</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_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="k2">{</span>
<span class="number"> 15</span>      <span class="c">//abort_example("Could not set up voice and mixer.\n");</span>
<span class="number"> 16</span>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 17</span>   <span class="k2">}</span>
<span class="number"> 18</span>
<span class="number"> 19</span>    voice <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_voice"><span class="a">al_create_voice</span></a><span class="k2">(</span><span class="n">44100</span>, ALLEGRO_AUDIO_DEPTH_INT16, ALLEGRO_CHANNEL_CONF_2<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>voice<span class="k2">)</span> <span class="k2">{</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Could not create ALLEGRO_VOICE.\n"</span><span class="k2">)</span><span class="k2">;</span> <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span> <span class="k2">}</span>
<span class="number"> 21</span>
<span class="number"> 22</span>    <span class="p">#ifndef BYPASS_MIXER</span>
<span class="number"> 23</span>    mixer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_mixer"><span class="a">al_create_mixer</span></a><span class="k2">(</span><span class="n">44100</span>, ALLEGRO_AUDIO_DEPTH_FLOAT32, ALLEGRO_CHANNEL_CONF_2<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>mixer<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 25</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Could not create ALLEGRO_MIXER.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>        <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 27</span>    <span class="k2">}</span>
<span class="number"> 28</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Mixer created.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_attach_mixer_to_voice"><span class="a">al_attach_mixer_to_voice</span></a><span class="k2">(</span>mixer, voice<span class="k2">)</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 30</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"al_attach_mixer_to_voice failed.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>        <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 32</span>    <span class="k2">}</span>
<span class="number"> 33</span>    <span class="p">#endif</span>
<span class="number"> 34</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_AUDIO_STREAM"><span class="a">ALLEGRO_AUDIO_STREAM</span></a> <span class="k3">*</span>stream, <span class="k3">*</span>stream2<span class="k2">;</span>
<span class="number"> 35</span>    <span class="k1">bool</span> playing <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 36</span>
<span class="number"> 37</span>    stream <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_audio_stream"><span class="a">al_load_audio_stream</span></a><span class="k2">(</span><span class="s">"music/01_TitleSong.ogg"</span>, <span class="n">4</span>, <span class="n">2048</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>    <a href="http://www.allegro.cc/manual/al_attach_audio_stream_to_mixer"><span class="a">al_attach_audio_stream_to_mixer</span></a><span class="k2">(</span>stream, mixer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>    stream2 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_audio_stream"><span class="a">al_load_audio_stream</span></a><span class="k2">(</span><span class="s">"music/Page_null.ogg"</span>, <span class="n">4</span>, <span class="n">2048</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span>    <a href="http://www.allegro.cc/manual/al_attach_audio_stream_to_mixer"><span class="a">al_attach_audio_stream_to_mixer</span></a><span class="k2">(</span>stream2, mixer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>
<span class="number"> 42</span>
<span class="number"> 43</span><span class="c">//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//</span>
</div></div><p>

This is to stop a previous stream and load a new one:
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number"> 1</span><a href="http://www.allegro.cc/manual/al_destroy_audio_stream"><span class="a">al_destroy_audio_stream</span></a><span class="k2">(</span>stream<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 2</span>stream <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_audio_stream"><span class="a">al_load_audio_stream</span></a><span class="k2">(</span><span class="s">"music/01_TitleSong.ogg"</span>, <span class="n">4</span>, <span class="n">2048</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 3</span><a href="http://www.allegro.cc/manual/al_attach_audio_stream_to_mixer"><span class="a">al_attach_audio_stream_to_mixer</span></a><span class="k2">(</span>stream, mixer<span class="k2">)</span><span class="k2">;</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Phrasz)</author>
		<pubDate>Mon, 09 May 2011 07:36:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The code is still a bit confusing.</p><p>If you are going to use your own mixer, you should create it before <span class="source-code"><a href="http://www.allegro.cc/manual/al_reserve_samples"><span class="a">al_reserve_samples</span></a><span class="k2">(</span><span class="k2">)</span></span> and call <span class="source-code"><a href="http://www.allegro.cc/manual/al_set_default_mixer"><span class="a">al_set_default_mixer</span></a><span class="k2">(</span><span class="k2">)</span></span> on it before reserving the samples. Otherwise, <span class="source-code"><a href="http://www.allegro.cc/manual/al_reserve_samples"><span class="a">al_reserve_samples</span></a><span class="k2">(</span><span class="k2">)</span></span> will create its own mixer and voice.</p><p>Or, you can do this:
</p><div class="source-code snippet"><div class="inner"><pre><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">10</span><span class="k2">)</span><span class="k2">;</span>
mixer <span class="k3">=</span> <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>
</pre></div></div><p>
and then you don&#39;t have to create your own mixer or voice.</p><p>Note that if you never call <span class="source-code"><a href="http://www.allegro.cc/manual/al_play_sample"><span class="a">al_play_sample</span></a><span class="k2">(</span><span class="k2">)</span></span> then you don&#39;t even need to call <span class="source-code"><a href="http://www.allegro.cc/manual/al_reserve_samples"><span class="a">al_reserve_samples</span></a><span class="k2">(</span><span class="k2">)</span></span>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Mon, 09 May 2011 08:23:23 +0000</pubDate>
	</item>
</rss>
