<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>config_section=old</title>
		<link>http://www.allegro.cc/forums/view/609353</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 28 Jan 2012 10:41:51 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code"><div class="toolbar"><span class="name">xglx_config.c</span><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"> 378</span><span class="k1">static</span> <span class="k1">void</span> select_best_visual<span class="k2">(</span>ALLEGRO_DISPLAY_XGLX <span class="k3">*</span>glx,
<span class="number"> 379</span>                               ALLEGRO_EXTRA_DISPLAY_SETTINGS<span class="k3">*</span> <span class="k3">*</span>eds, <span class="k1">int</span> eds_count,
<span class="number"> 380</span>                               <span class="k1">bool</span> using_fbc<span class="k2">)</span>
<span class="number"> 381</span><span class="k2">{</span>
<span class="number"> 382</span>   ALLEGRO_SYSTEM_XGLX <span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_802.html" target="_blank">system</a> <span class="k3">=</span> <span class="k2">(</span><span class="k1">void</span> <span class="k3">*</span><span class="k2">)</span>al_get_system_driver<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 383</span>   
<span class="number"> 384</span>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_635.html" target="_blank">qsort</a><span class="k2">(</span>eds, eds_count, <span class="k1">sizeof</span><span class="k2">(</span><span class="k3">*</span>eds<span class="k2">)</span>, _al_display_settings_sorter<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 385</span>
<div class="highlight"><span class="number"> 386</span>   <a href="http://www.allegro.cc/manual/ASSERT"><span class="a">ASSERT</span></a><span class="k2">(</span>eds<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span> </div><span class="number"> 387</span>
<span class="number"> 388</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>eds<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>info<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 389</span>       ALLEGRO_ERROR<span class="k2">(</span><span class="s">"No matching displays found.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 390</span>       glx-&gt;xvinfo <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 391</span>       <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 392</span>   <span class="k2">}</span>
</div></div><p>

Using VirtualBox, the assert (added by me) is triggered. All 64 visuals are &quot;incomplete&quot;, but it still says eds_count=64.</p><div class="source-code"><div class="toolbar"><span class="name">xgl_config.c</span><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"> 226</span>   ALLEGRO_INFO<span class="k2">(</span><span class="s">"%i formats.\n"</span>, num_fbconfigs<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 227</span>
<span class="number"> 228</span>   <span class="k1">for</span> <span class="k2">(</span>i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> num_fbconfigs<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 229</span>      ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"-- \n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 230</span>      ALLEGRO_DEBUG<span class="k2">(</span><span class="s">"Decoding visual no. %i...\n"</span>, i<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 231</span>      eds<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">=</span> read_fbconfig<span class="k2">(</span>system-&gt;gfxdisplay, fbconfig<span class="k2">[</span>i<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 232</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>eds<span class="k2">[</span>i<span class="k2">]</span><span class="k2">)</span>
<div class="highlight"><span class="number"> 233</span>         <span class="k1">continue</span><span class="k2">;</span> </div><span class="number"> 234</span><span class="p">#ifdef DEBUGMODE</span>
<span class="number"> 235</span>      display_pixel_format<span class="k2">(</span>eds<span class="k2">[</span>i<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 236</span><span class="p">#endif</span>
<span class="number"> 237</span>      eds<span class="k2">[</span>i<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>score <span class="k3">=</span> _al_score_display_settings<span class="k2">(</span>eds<span class="k2">[</span>i<span class="k2">]</span>, ref<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 238</span>      <span class="k1">if</span> <span class="k2">(</span>eds<span class="k2">[</span>i<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>score <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 239</span>         <span class="k1">continue</span><span class="k2">;</span>
<span class="number"> 240</span>      <span class="k2">}</span>
<span class="number"> 241</span>      eds<span class="k2">[</span>i<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> i<span class="k2">;</span>
<span class="number"> 242</span>      eds<span class="k2">[</span>i<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>info <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_malloc"><span class="a">al_malloc</span></a><span class="k2">(</span><span class="k1">sizeof</span><span class="k2">(</span>GLXFBConfig<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 243</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_566.html" target="_blank">memcpy</a><span class="k2">(</span>eds<span class="k2">[</span>i<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>info, <span class="k3">&amp;</span>fbconfig<span class="k2">[</span>i<span class="k2">]</span>, <span class="k1">sizeof</span><span class="k2">(</span>GLXFBConfig<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 244</span>   <span class="k2">}</span>
<span class="number"> 245</span>
<span class="number"> 246</span>   <span class="k3">*</span>eds_count <span class="k3">=</span> i<span class="k2">;</span>
<span class="number"> 247</span>   ALLEGRO_INFO<span class="k2">(</span><span class="s">"%i visuals are good enough.\n"</span>, i<span class="k2">)</span><span class="k2">;</span>
</div></div><p>

Could somebody who is familiar with this clean that up? It seems very sloppy to ignore <span class="source-code">NULL</span> values, and still consider <span class="source-code">eds_count</span> to equal <span class="source-code">i</span>. It appears to me that you&#39;d get 64 NULLs which are happily passed along.</p><p>I could hack in a check to switch to the old function if everything is <span class="source-code">NULL</span>, but that isn&#39;t very proper.</p><p>With the following config, it works:
</p><pre>
[graphics]
config_selection=old
</pre><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sun, 22 Jan 2012 09:22:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You mean like this? (not really tested)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Sun, 22 Jan 2012 10:24:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Cannot really tell from that patch, but does this mean it will automatically fall back to &quot;old&quot; if &quot;new&quot; fails? I don&#39;t even know what&#39;s going on in that file or what the difference is between the two, so pardon my lack of effort in trying to do any debugging.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sun, 22 Jan 2012 10:28:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It should do (fall back) although that wasn&#39;t what I was going for. Actually I wasn&#39;t sure what your bug report was about.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Sun, 22 Jan 2012 10:38:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Running Ubuntu under a VM triggers the behavior of those NULL values and crash on every created display.</p><p>Using the config to skip that function &quot;fixes&quot; it. People complain about it from time to time (not sure under what environment), and usually Elias stops by to tell them to create an allegro5.cfg with the above settings.</p><p>Update:</p><p>The patch seems to work. I just applied it as-is, and the examples all run.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Tue, 24 Jan 2012 05:46:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I always assumed that the crash was due to a bug in the newer GLX functions, otherwise why did Milan make it a configurable option? I will apply the patch.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Thu, 26 Jan 2012 04:49:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Matt what was the host system when you ran the VM?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Don Freeman)</author>
		<pubDate>Sat, 28 Jan 2012 10:03:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>OS X 10.7.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sat, 28 Jan 2012 10:41:51 +0000</pubDate>
	</item>
</rss>
