<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>D3D Font Issue is sometime back with fullscreen toggle</title>
		<link>http://www.allegro.cc/forums/view/610172</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 07 May 2012 03:09:36 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have been rigorously testing my game.  A few months ago I fixed an issue that caused font glyphs to disappear when getting the text width. I have noticed that, if I toggle fullscreen then back to windowed at an unreasonable speed, it sometimes messes up my fonts in the same way as before.</p><p>I doubt it would ever happen under normal circumstances, but it probably should never happen at all.</p><p>Would anyone, especially Trent, have an idea why it might happen under these circumstances. Would there be a way to ensure it never happens, knowing how I solved it last time?</p><p>Thanks</p><p>Edit:<br />After trying it some more, it seems that sometimes just casually going fullscreen like normal causes it.</p><p>Edit2: Okay, I made it so that after toggling fullscreen, I rest for about half a second and now the problem happens every time. So it is a timing issue and something needs to be locked or something while it does this.</p><p>Edit3: Turns out my code for making a thinner border was causing the problem.
</p><div class="source-code snippet"><div class="inner"><pre>  <span class="k1">void</span> Display::initContext<span class="k2">(</span> DisplayContext<span class="k3">*</span> c <span class="k2">)</span>
  <span class="k2">{</span>
    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_display_flags"><span class="a">al_get_display_flags</span></a><span class="k2">(</span>context<span class="k2">)</span> <span class="k3">&amp;</span> ALLEGRO_FULLSCREEN_WINDOW<span class="k2">)</span><span class="k2">)</span>
    <span class="k2">{</span>
<span class="p">#ifdef _WIN32</span>
      HWND win <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_win_window_handle"><span class="a">al_get_win_window_handle</span></a><span class="k2">(</span>context<span class="k2">)</span><span class="k2">;</span>
      SetWindowLong<span class="k2">(</span>win, GWL_EXSTYLE,  WS_EX_APPWINDOW<span class="k3">|</span>WS_EX_WINDOWEDGE<span class="k2">)</span><span class="k2">;</span>
      <a href="http://www.allegro.cc/manual/al_resize_display"><span class="a">al_resize_display</span></a><span class="k2">(</span>context,getResolution<span class="k2">(</span><span class="k2">)</span>.getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> <span class="n">1</span>,getResolution<span class="k2">(</span><span class="k2">)</span>.getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
      <a href="http://www.allegro.cc/manual/al_resize_display"><span class="a">al_resize_display</span></a><span class="k2">(</span>context,getResolution<span class="k2">(</span><span class="k2">)</span>.getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">1</span>,getResolution<span class="k2">(</span><span class="k2">)</span>.getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="p">#endif</span>
    <span class="k2">}</span>
  <span class="k2">}</span>
</pre></div></div><p>

Which gave me an idea for a function:<br />al_win_set_window_style();</p><p>This could allow developers to have more control over their window. Every resizable application I know does not have a thick border, thus I created this function, but it requires me to resync with Allegro in some weird ways, so I will not use it.</p><p>Edit4:</p><p>Fixed it with:
</p><div class="source-code snippet"><div class="inner"><pre>  <span class="k1">void</span> Display::initContext<span class="k2">(</span> DisplayContext<span class="k3">*</span> c <span class="k2">)</span>
  <span class="k2">{</span>
    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_display_flags"><span class="a">al_get_display_flags</span></a><span class="k2">(</span>context<span class="k2">)</span> <span class="k3">&amp;</span> ALLEGRO_FULLSCREEN_WINDOW<span class="k2">)</span><span class="k2">)</span>
    <span class="k2">{</span>
<span class="p">#ifdef _WIN32</span>
      HWND win <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_win_window_handle"><span class="a">al_get_win_window_handle</span></a><span class="k2">(</span>context<span class="k2">)</span><span class="k2">;</span>
      SetWindowLong<span class="k2">(</span>win, GWL_EXSTYLE,  WS_EX_APPWINDOW<span class="k3">|</span>WS_EX_WINDOWEDGE<span class="k2">)</span><span class="k2">;</span>
      SetWindowPos<span class="k2">(</span>win,NULL,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,SWP_NOMOVE <span class="k3">|</span> SWP_NOSIZE <span class="k3">|</span> SWP_FRAMECHANGED<span class="k2">)</span><span class="k2">;</span>
<span class="p">#endif</span>
    <span class="k2">}</span>
  <span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jmasterx)</author>
		<pubDate>Mon, 07 May 2012 03:09:36 +0000</pubDate>
	</item>
</rss>
