<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Can&#39;t load TTF addon in separate class file</title>
		<link>http://www.allegro.cc/forums/view/607658</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 20 Jun 2011 09:37:31 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello guys. I am attempting to make a game and learn Allegro/C++ as I go. I learned Java in high school and basic C++ last semester in college. I think I understand most concepts, but one I for sure don&#39;t understand is memory management because that is something I didn&#39;t have to deal with in Java, and that may be what is making my program not work.</p><p>I am currently working on the level editor for my game (I haven&#39;t started the game yet), and I am having trouble with the TTF addon not working. I can successfully use the addon in my main .cpp file, but it isn&#39;t working in a separate class that I have made. It keeps telling me that it failed to initialize the ttf addon.</p><p>Here is the code in the main file that creates an instance of the separate class &quot;OpenDialogue&quot;, which creates a dialogue box (bitmap) for opening a previously-made level.</p><div class="source-code snippet"><div class="inner"><pre>isShowingDialog <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
currWorkPathCSTR <span class="k3">=</span> createDirectoryPath<span class="k2">(</span>currWorkPathAP, argv<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, <span class="s">"maps"</span><span class="k2">)</span><span class="k2">;</span>
OpenDialogue oDialog <span class="k2">(</span>argv<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, <span class="s">"Open a Map"</span>, currWorkPathCSTR, <span class="s">".dat"</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

Here is OpenDialogue.h:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#ifndef OPENDIALOGUE_H</span>
<span class="number">  2</span><span class="p">#define OPENDIALOGUE_H</span>
<span class="number">  3</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  4</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">  5</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  6</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">  7</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</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="p">#define UPPER_LIMIT_OF_POSSIBLE_MAPS 100</span>
<span class="number"> 11</span>
<span class="number"> 12</span><span class="k1">class</span> OpenDialogue
<span class="number"> 13</span><span class="k2">{</span>
<span class="number"> 14</span>  public:
<span class="number"> 15</span>    <span class="k1">int</span> width, height<span class="k2">;</span>
<span class="number"> 16</span>    
<span class="number"> 17</span>    OpenDialogue<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span> argv<span class="k2">[</span><span class="k2">]</span>, <span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> title, <span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> path, <span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> format<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>    <span class="k1">void</span> updateDialog<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>getBitmap<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>    <span class="k1">void</span> checkClickLocationAndAct<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_MOUSE_STATE"><span class="a">ALLEGRO_MOUSE_STATE</span></a> <span class="k3">*</span>mouse, <span class="k1">int</span> dialogueX, <span class="k1">int</span> dialogueY, <span class="k1">int</span> dialogueW, <span class="k1">int</span> dialogueH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>    <span class="k1">virtual</span> ~OpenDialogue<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>  protected:
<span class="number"> 23</span>  private:
<span class="number"> 24</span>    <span class="k1">int</span> returnValue<span class="k2">;</span>
<span class="number"> 25</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>mapListBMP<span class="k2">;</span>
<span class="number"> 26</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>dialogue<span class="k2">;</span>
<span class="number"> 27</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_FS_ENTRY"><span class="a">ALLEGRO_FS_ENTRY</span></a> <span class="k3">*</span>dir<span class="k2">;</span>
<span class="number"> 28</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_FS_ENTRY"><span class="a">ALLEGRO_FS_ENTRY</span></a> <span class="k3">*</span>mapsAvailable<span class="k2">[</span>UPPER_LIMIT_OF_POSSIBLE_MAPS<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 29</span>    <span class="k1">int</span> numMapsLoaded<span class="k2">;</span>
<span class="number"> 30</span>    ALLEGRO_PATH <span class="k3">*</span>fontPathAP<span class="k2">;</span>
<span class="number"> 31</span>    <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>fontPathCSTR<span class="k2">;</span>
<span class="number"> 32</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>dialogueFont<span class="k2">;</span>
<span class="number"> 33</span>    
<span class="number"> 34</span>    <span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> switchToDirectory<span class="k2">(</span>ALLEGRO_PATH <span class="k3">*</span>currWorkPathAP, <span class="k1">const</span> <span class="k1">char</span> argv<span class="k2">[</span><span class="k2">]</span>, <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>addon<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 35</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 36</span>
<span class="number"> 37</span><span class="p">#endif // OPENDIALOGUE_H</span>
</div></div><p>

And here is some of the code from OpenDialogue.cpp:</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 "OpenDialogue.h"</span>
<span class="number">  2</span>
<span class="number">  3</span>OpenDialogue::OpenDialogue<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span> argv<span class="k2">[</span><span class="k2">]</span>, <span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> title, <span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> path, <span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> format<span class="k2">)</span>
<span class="number">  4</span><span class="k2">{</span>
<span class="number">  5</span>  <span class="c">//ctor</span>
<span class="number">  6</span>  <span class="c">//al_set_new_bitmap_flags(ALLEGRO_MIN_LINEAR);</span>
<span class="number">  7</span>    <span class="c">//al_set_new_bitmap_flags(ALLEGRO_MAG_LINEAR);</span>
<span class="number">  8</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">  9</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"> 10</span>    <span class="k2">{</span>
<span class="number"> 11</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">"failed to initialize ttf addon in OpenDialogue.cpp!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>      returnValue <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 13</span>    <span class="k2">}</span>
<span class="number"> 14</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><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"> 15</span>    <span class="k2">{</span>
<span class="number"> 16</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">"failed to initialize image addon in OpenDialogue.cpp!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>      returnValue <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 18</span>    <span class="k2">}</span>
<span class="number"> 19</span>    
<span class="number"> 20</span>  returnValue <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 21</span>  numMapsLoaded <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 22</span>  
<span class="number"> 23</span>  dialogue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">1000</span>, <span class="n">600</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>  <span class="k1">if</span> <span class="k2">(</span>dialogue <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 25</span>  <span class="k2">{</span>
<span class="number"> 26</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">"failed to create dialogue BMP\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>    returnValue <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 28</span>  <span class="k2">}</span>
<span class="number"> 29</span>  <span class="c">// read in file names from path and keep .dat files</span>
<span class="number"> 30</span>  <span class="c">//al_change_directory(path);</span>
<span class="number"> 31</span>  dir <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_fs_entry"><span class="a">al_create_fs_entry</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_open_directory"><span class="a">al_open_directory</span></a><span class="k2">(</span>dir<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 33</span>    <span class="k2">{</span>
<span class="number"> 34</span>        <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="c">// current file</span>
<span class="number"> 35</span>        <span class="k1">while</span><span class="k2">(</span> <span class="k2">(</span>mapsAvailable<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_read_directory"><span class="a">al_read_directory</span></a><span class="k2">(</span>dir<span class="k2">)</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>mapsAvailable<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">!</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 36</span>        <span class="k2">{</span>
<span class="number"> 37</span>          <span class="c">//const char* mapNameCSTR = al_get_path_filename(al_create_path(al_get_fs_entry_name(mapsAvailable[i])));</span>
<span class="number"> 38</span>          <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>fileExtCSTR <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_path_extension"><span class="a">al_get_path_extension</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_create_path"><span class="a">al_create_path</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_fs_entry_name"><span class="a">al_get_fs_entry_name</span></a><span class="k2">(</span>mapsAvailable<span class="k2">[</span>i<span class="k2">]</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>          <span class="k1">char</span> <span class="k3">*</span>lowerFileExtCSTR<span class="k2">;</span>
<span class="number"> 40</span>          <a href="http://www.delorie.com/djgpp/doc/libc/libc_756.html" target="_blank">strcpy</a><span class="k2">(</span>lowerFileExtCSTR, fileExtCSTR<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>          lowerFileExtCSTR <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_765.html" target="_blank">strlwr</a><span class="k2">(</span>lowerFileExtCSTR<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span>          <span class="c">//printf("lowerFileExtCSTR: %s\n", lowerFileExtCSTR);</span>
<span class="number"> 43</span>          <span class="k1">if</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_754.html" target="_blank">strcmp</a><span class="k2">(</span>lowerFileExtCSTR, format<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 44</span>          <span class="k2">{</span>
<span class="number"> 45</span>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"%s"</span>, <a href="http://www.allegro.cc/manual/al_get_path_filename"><span class="a">al_get_path_filename</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_create_path"><span class="a">al_create_path</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_fs_entry_name"><span class="a">al_get_fs_entry_name</span></a><span class="k2">(</span>mapsAvailable<span class="k2">[</span>i<span class="k2">]</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">" is a .dat\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 47</span>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"done with file %i\n\n"</span>, i<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 48</span>            i<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 49</span>            numMapsLoaded<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 50</span>          <span class="k2">}</span>
<span class="number"> 51</span>        <span class="k2">}</span>
<span class="number"> 52</span>    <span class="k2">}</span>
<span class="number"> 53</span>    <span class="k1">else</span>
<span class="number"> 54</span>    <span class="k2">{</span>
<span class="number"> 55</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">"failed to open open directory to make OpenDialogue instance!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 56</span>      returnValue <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 57</span>    <span class="k2">}</span>
<span class="number"> 58</span>    <a href="http://www.allegro.cc/manual/al_close_directory"><span class="a">al_close_directory</span></a><span class="k2">(</span>dir<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 59</span>  
<span class="number"> 60</span>  <span class="c">// output data to mapListBMP</span>
<span class="number"> 61</span>  <span class="c">//printf("path: %s\n", path);</span>
<span class="number"> 62</span>  fontPathCSTR <span class="k3">=</span> switchToDirectory<span class="k2">(</span>fontPathAP, argv, <span class="s">"fonts"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 63</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"fPathCSTR: %s\n"</span>, fontPathCSTR<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 64</span>  dialogueFont <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_font"><span class="a">al_load_font</span></a><span class="k2">(</span><span class="s">"FreeUniversal-Regular.ttf"</span>, <span class="n">20</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 65</span>  <span class="k1">if</span> <span class="k2">(</span>dialogueFont <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 66</span>  <span class="k2">{</span>
<span class="number"> 67</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">"failed to create dialogueFont!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 68</span>    returnValue <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 69</span>  <span class="k2">}</span>
<span class="number"> 70</span>  mapListBMP <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">600</span>, <span class="n">25</span><span class="k3">*</span>numMapsLoaded<span class="k2">)</span><span class="k2">;</span> <span class="c">// replace 550 with (20*numMapsLoaded) when I figure out how big each text thing is (also include width between each item)</span>
<span class="number"> 71</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>mapListBMP<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 72</span>  <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> numMapsLoaded<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 73</span>  <span class="k2">{</span>
<span class="number"> 74</span>      <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>dialogueFont, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span>,
<span class="number"> 75</span>          <span class="n">1</span>, <span class="c">// destination starting x</span>
<span class="number"> 76</span>          i<span class="k3">*</span><span class="n">25</span>, <span class="c">// destination starting y</span>
<span class="number"> 77</span>          <span class="n">0</span>, <span class="c">// flags</span>
<span class="number"> 78</span>          <a href="http://www.allegro.cc/manual/al_get_path_basename"><span class="a">al_get_path_basename</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_create_path"><span class="a">al_create_path</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_fs_entry_name"><span class="a">al_get_fs_entry_name</span></a><span class="k2">(</span>mapsAvailable<span class="k2">[</span>i<span class="k2">]</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// text to display</span>
<span class="number"> 79</span>  <span class="k2">}</span>
<span class="number"> 80</span>  
<span class="number"> 81</span>  <span class="c">//updateDialog();</span>
<span class="number"> 82</span>  <span class="c">//printf("created OpenDialogue instance\n");</span>
<span class="number"> 83</span><span class="k2">}</span>
</div></div><p>

Basically, at line 9 in OpenDialogue.cpp, it says that it failed to load the TTF addon (and it may fail at loading the main font addon, but I don&#39;t know since that one doesn&#39;t have a return). That causes the game to crash (as expected because dialogueFont is NULL) at line 74.</p><p>At line 64, it also tells me that it failed to create dialogueFont (as expected, because the TTF addon wasn&#39;t initialized).</p><p>Am I missing something obvious? I&#39;m not sure if I even have to initialize the addons in every file or not.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (cmasupra)</author>
		<pubDate>Mon, 20 Jun 2011 08:53:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>In main() the first things you should do are:
</p><div class="source-code snippet"><div class="inner"><pre><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>
<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>
<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="c">// init whatever</span>
</pre></div></div><p>
You only need to do it once, and you <i>must</i> do it before you use any of their related functions. Don&#39;t put them in the constructors of your objects.</p><p>You need to be careful with constructors. Something like this won&#39;t work if the FooObject calls some other Allegro function because Allegro won&#39;t have been initialized yet:</p><div class="source-code snippet"><div class="inner"><pre>FooObject Foo<span class="k2">;</span>

<a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Mon, 20 Jun 2011 08:58:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Disclaimer: I am both intoxicated and too tired to bother reading through your OP.</p><p>&quot;Class file&quot; sounds like a Java influence. You must try to understand that C++ is <i>very</i> different from Java. C (the language that Allegro is written in) is even more different.</p><p>A file doesn&#39;t mean <span class="cuss"><span>fuck</span></span> all to C or C++. These compilers think in terms of &quot;<a href="http://en.wikipedia.org/wiki/Translation_unit_(programming)">translation units</a>&quot;. There are various stages of C or C++ building that you need to aware of:</p><ol><li><p><b>Preprocessing.</b> The C preprocessor runs, processing <u>directives</u> (e.g., <span class="source-code"><span class="p">#include</span></span>; or any line whose first non-whitespace character is a <span class="source-code"><span class="s">'#'</span></span>), and effectively transforms the original source file (e.g., .c or .cpp) with them.
</p></li><li><p><b>Compilation.</b> These translation units are effectively preprocessed source files. These are typically translated into <a href="http://en.wikipedia.org/wiki/Object_file">object files</a>. Effectively, the object file is a binary interpretation of the translation unit (i.e., preprocessed source file).
</p></li><li><p><b>Linking.</b> The compiled translation units, as well as third-party libraries, are all linked together into some kind of executable output file.</p></li></ol><p>(Think of each step above as a completely separate program)</p><p>The important distinction is that in a language like Java all of the available classes are available at once for interpretation and compilation (or at least, it seems practically so). In C or C++ each translation unit (preprocessed source file) only knows about itself (what it declares or defines) and whatever it <span class="source-code"><span class="p">#include</span></span>s.</p><p>That said, much C or C++ code manipulates global data. In Allegro this is certainly true. Initializing Allegro or one of its addons (assuming you did so correctly) is global to the entire application. You only need to do so once. If it succeeds (see <a href="http://wiki.allegro.cc/index.php?title=Return_values">here</a>) then it is considered initialized for the duration of the application (unless you happen to deinitialize it, but those APIs, if exposed at all, are rarely used in Allegro programs).</p><p>Glancing at your code I can say that it is wrong to initialize anything in Allegro within an &quot;open dialog&quot; method/function. That should typically <i>not</i> be handled by library routines, but instead by application code. If it is handled by a library routine it should be something more generic. That is to say, you don&#39;t need (nor want) to initialize Allegro nor its addons every time you open a dialog. You do it once for the duration of the application.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Mon, 20 Jun 2011 09:14:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here is the beginning of my main method in the main file. First come the variable declarations, then initializing Allegro stuff. I&#39;m pretty sure it&#39;s in a good order.</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/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">   2</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>event_queue <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">   3</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">   4</span>    ALLEGRO_PATH <span class="k3">*</span>basePathAP <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">   5</span>    ALLEGRO_PATH <span class="k3">*</span>currWorkPathAP <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">   6</span>    <span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> basePathCSTR <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">   7</span>    <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>currWorkPathCSTR <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">   8</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_FS_ENTRY"><span class="a">ALLEGRO_FS_ENTRY</span></a> <span class="k3">*</span>dir <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">   9</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_FS_ENTRY"><span class="a">ALLEGRO_FS_ENTRY</span></a> <span class="k3">*</span>tilesAvailable<span class="k2">[</span>UPPER_LIMIT_OF_POSSIBLE_TILES<span class="k2">]</span><span class="k2">;</span>
<span class="number">  10</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_FS_ENTRY"><span class="a">ALLEGRO_FS_ENTRY</span></a> <span class="k3">*</span>itemsAvailable<span class="k2">[</span>UPPER_LIMIT_OF_POSSIBLE_ITEMS<span class="k2">]</span><span class="k2">;</span>
<span class="number">  11</span>    <span class="k1">int</span> numTilesLoaded<span class="k3">=</span><span class="n">0</span>, numItemsLoaded<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  12</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_MONITOR_INFO"><span class="a">ALLEGRO_MONITOR_INFO</span></a> monitorInfo<span class="k2">;</span>
<span class="number">  13</span>    <span class="k1">int</span> monitorW, monitorH<span class="k2">;</span>
<span class="number">  14</span>    <span class="k1">int</span> amtToAddOnEachSide<span class="k2">;</span> <span class="c">// the amount of pixels to add/subtract on each side to make the game full screen</span>
<span class="number">  15</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>tileListFont <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  16</span>    <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  17</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_MOUSE_STATE"><span class="a">ALLEGRO_MOUSE_STATE</span></a> mouse<span class="k2">;</span>
<span class="number">  18</span>    <span class="k1">int</span> mouseButton <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="c">// used for determining which mouse button was released for MOUSE_BUTTON_UP event</span>
<span class="number">  19</span>    <span class="k1">int</span> mouse1DownState <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="c">// 0 = not holding down, 1 = holding down button 1</span>
<span class="number">  20</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>map <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  21</span>    <span class="k1">int</span> currTileInt <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  22</span>    <span class="k1">bool</span> isShowingDialog <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  23</span>    
<span class="number">  24</span>    
<span class="number">  25</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">  26</span>    <span class="k2">{</span>
<span class="number">  27</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">"failed to initialize allegro!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  28</span>        <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span>dir<span class="k2">)</span><span class="k2">;</span>
<span class="number">  29</span>    <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span><span class="k3">*</span>tilesAvailable<span class="k2">)</span><span class="k2">;</span>
<span class="number">  30</span>    <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span><span class="k3">*</span>itemsAvailable<span class="k2">)</span><span class="k2">;</span>
<span class="number">  31</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>map<span class="k2">)</span><span class="k2">;</span>
<span class="number">  32</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>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number">  33</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">  34</span>        <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  35</span>    <span class="k2">}</span>
<span class="number">  36</span>    
<span class="number">  37</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="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  38</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>timer<span class="k2">)</span>
<span class="number">  39</span>    <span class="k2">{</span>
<span class="number">  40</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">"failed to create timer!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span>      <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span>dir<span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>    <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span><span class="k3">*</span>tilesAvailable<span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>    <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span><span class="k3">*</span>itemsAvailable<span class="k2">)</span><span class="k2">;</span>
<span class="number">  44</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>map<span class="k2">)</span><span class="k2">;</span>
<span class="number">  45</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>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number">  46</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">  47</span>        <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  48</span>    <span class="k2">}</span>
<span class="number">  49</span>    
<span class="number">  50</span>    <span class="c">//al_set_new_display_flags(ALLEGRO_FULLSCREEN);</span>
<span class="number">  51</span>    <a href="http://www.allegro.cc/manual/al_set_new_display_refresh_rate"><span class="a">al_set_new_display_refresh_rate</span></a><span class="k2">(</span><span class="n">60</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  52</span>    <a href="http://www.allegro.cc/manual/al_get_monitor_info"><span class="a">al_get_monitor_info</span></a><span class="k2">(</span><span class="n">0</span>, <span class="k3">&amp;</span>monitorInfo<span class="k2">)</span><span class="k2">;</span>
<span class="number">  53</span>    monitorW <span class="k3">=</span> monitorInfo.x2 <span class="k3">-</span> monitorInfo.x1<span class="k2">;</span>
<span class="number">  54</span>    monitorH <span class="k3">=</span> monitorInfo.y2 <span class="k3">-</span> monitorInfo.y1<span class="k2">;</span>
<span class="number">  55</span>    monitorW <span class="k3">=</span> <span class="n">1366</span><span class="k2">;</span>
<span class="number">  56</span>    monitorH <span class="k3">=</span> <span class="n">768</span><span class="k2">;</span>
<span class="number">  57</span>    amtToAddOnEachSide <span class="k3">=</span> <span class="n">0</span>.<span class="n">5</span> <span class="k3">*</span> <span class="k2">(</span>monitorH <span class="k3">-</span> <span class="k2">(</span>monitorW<span class="k3">/</span><span class="n">16</span>.<span class="n">0</span><span class="k3">*</span><span class="n">9</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  58</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>monitorW, monitorH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  59</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span>
<span class="number">  60</span>    <span class="k2">{</span>
<span class="number">  61</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">"failed to create display!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  62</span>        <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span>dir<span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>    <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span><span class="k3">*</span>tilesAvailable<span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span>    <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span><span class="k3">*</span>itemsAvailable<span class="k2">)</span><span class="k2">;</span>
<span class="number">  65</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>map<span class="k2">)</span><span class="k2">;</span>
<span class="number">  66</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>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number">  67</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">  68</span>        <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  69</span>    <span class="k2">}</span>
<span class="number">  70</span>    <span class="k1">int</span> lineWidthAt1920 <span class="k3">=</span> <span class="n">6</span><span class="k2">;</span>
<span class="number">  71</span>    <span class="k1">int</span> lineWidth <span class="k3">=</span> roundTo0D<span class="k2">(</span>lineWidthAt1920 <span class="k3">/</span> <span class="n">1920</span>.<span class="n">0</span> <span class="k3">*</span> monitorW<span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>    
<span class="number">  73</span>    event_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">  74</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>event_queue<span class="k2">)</span>
<span class="number">  75</span>    <span class="k2">{</span>
<span class="number">  76</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">"failed to create event queue"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  77</span>      <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span>dir<span class="k2">)</span><span class="k2">;</span>
<span class="number">  78</span>    <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span><span class="k3">*</span>tilesAvailable<span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>    <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span><span class="k3">*</span>itemsAvailable<span class="k2">)</span><span class="k2">;</span>
<span class="number">  80</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>map<span class="k2">)</span><span class="k2">;</span>
<span class="number">  81</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>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number">  82</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">  83</span>    <span class="k2">}</span>
<span class="number">  84</span>    
<span class="number">  85</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">  86</span>    <span class="k2">{</span>
<span class="number">  87</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">"failed to initialize image addon!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>      <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span>dir<span class="k2">)</span><span class="k2">;</span>
<span class="number">  89</span>    <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span><span class="k3">*</span>tilesAvailable<span class="k2">)</span><span class="k2">;</span>
<span class="number">  90</span>    <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span><span class="k3">*</span>itemsAvailable<span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>map<span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</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>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number">  93</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">  94</span>      <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  95</span>    <span class="k2">}</span>
<span class="number">  96</span>    
<span class="number">  97</span>    
<span class="number">  98</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">  99</span>    <span class="k2">{</span>
<span class="number"> 100</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">"failed to initialize image addon!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>      <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span>dir<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 102</span>    <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span><span class="k3">*</span>tilesAvailable<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 103</span>    <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span><span class="k3">*</span>itemsAvailable<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 104</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>map<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 105</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>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 106</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"> 107</span>      <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 108</span>    <span class="k2">}</span>
<span class="number"> 109</span>    
<span class="number"> 110</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"> 111</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>
</div></div><p>

I just tried removing the Allegro initializations from OpenDialogue.cpp, and it&#39;s still crashing, but it didn&#39;t crash at the same point this time. I can&#39;t figure out where it&#39;s crashing.</p><p>Regardless, I somehow have it working. It makes no sense to me. I hope someone can explain it. Here is what my new oDialog declaration looks like (same as before, but with printf statements).</p><div class="source-code snippet"><div class="inner"><pre>isShowingDialog <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
currWorkPathCSTR <span class="k3">=</span> createDirectoryPath<span class="k2">(</span>currWorkPathAP, argv<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, <span class="s">"maps"</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"creating oDialog instance"</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// ?????? commenting this printf out makes the game crash in the OpenDialogue class in the same spot as before ????</span>
OpenDialogue oDialog <span class="k2">(</span>argv<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, <span class="s">"Open a Map"</span>, currWorkPathCSTR, <span class="s">".dat"</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"created oDialog instance"</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

The only thing changed from the OpenDialogue.cpp class shown in my previous post is I added some prinf statements in there and commented out the Allegro initializations, but that&#39;s not the confusing part. The confusing part is in the code right above this paragraph. Commenting out that printf statement makes the game crash. That makes no sense to me. Maybe there are memory management problems and printf is somehow accessing memory and coincidentally fixing it? That seems pretty farfetched to me.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (cmasupra)</author>
		<pubDate>Mon, 20 Jun 2011 09:37:31 +0000</pubDate>
	</item>
</rss>
