<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>switch FULLSCREEN on and off</title>
		<link>http://www.allegro.cc/forums/view/617152</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 03 Dec 2017 17:43:27 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello everyone.</p><p>I&#39;m currently trying to implement a fullscreen on/off function on my allegro game. It basically consists of destroying the current display and generating a new one in fullscreen mode, or in the game&#39;s native resolution if it already was in fullscreen mode. </p><p>The problem is, once I activate the function, images drawn before the new display was created can&#39;t be displayed, so I get a black screen. So I have to redraw every bitmap needed for the portion of the game I&#39;m in for it to behave normally.</p><p>I looked in the allegro manual, but I couldn&#39;t find the answer I was looking for. Is this problem unavoidable ?</p><p>here&#39;s the relevant portion of my code:
</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">//gameScreen is a structure where I store the display and the buffer of my game</span>
<span class="number">  2</span><span class="k1">void</span> fullScreen<span class="k2">(</span>gameScreen <span class="k3">*</span><a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a><span class="k2">)</span>
<span class="number">  3</span><span class="k2">{</span>
<span class="number">  4</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>screen-&gt;fullScreenOnOff<span class="k2">)</span>
<span class="number">  5</span>  <span class="k2">{</span>
<span class="number">  6</span>    screen-&gt;fullScreenOnOff <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  7</span>    <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>screen-&gt;display<span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>
<span class="number">  9</span>    <span class="c">//I get my screen's native resolution</span>
<span class="number"> 10</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY_MODE"><span class="a">ALLEGRO_DISPLAY_MODE</span></a> mode<span class="k2">;</span>
<span class="number"> 11</span>    <a href="http://www.allegro.cc/manual/al_get_display_mode"><span class="a">al_get_display_mode</span></a><span class="k2">(</span><span class="n">0</span>, <span class="k3">&amp;</span>mode<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>
<span class="number"> 13</span>    <span class="c">//I create a new window</span>
<span class="number"> 14</span>    <a href="http://www.allegro.cc/manual/al_set_new_display_flags"><span class="a">al_set_new_display_flags</span></a><span class="k2">(</span>ALLEGRO_FULLSCREEN_WINDOW<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>    screen-&gt;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>mode.width, mode.height<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>  <span class="k2">}</span>
<span class="number"> 17</span>  <span class="k1">else</span>
<span class="number"> 18</span>  <span class="k2">{</span>
<span class="number"> 19</span>    screen-&gt;fullScreenOnOff <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 20</span>    <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>screen-&gt;display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>
<span class="number"> 22</span>    <span class="c">//I recreate a window in my game's resolution</span>
<span class="number"> 23</span>    <a href="http://www.allegro.cc/manual/al_set_new_display_flags"><span class="a">al_set_new_display_flags</span></a><span class="k2">(</span>ALLEGRO_WINDOWED<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>    <a href="http://www.allegro.cc/manual/al_set_new_display_flags"><span class="a">al_set_new_display_flags</span></a><span class="k2">(</span>ALLEGRO_RESIZABLE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>    screen-&gt;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><a href="http://www.allegro.cc/manual/SCREEN_W"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>  <span class="k2">}</span>
<span class="number"> 27</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (taiwing)</author>
		<pubDate>Sat, 02 Dec 2017 21:07:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you are using a fullscreen window you can switch between fullscreen and windowed without having to destroy anything, eg:</p><div class="source-code snippet"><div class="inner"><pre><span class="c">// toggle fullscreen</span>
al_set_display_flag<span class="k2">(</span>display, ALLEGRO_FULLSCREEN_WINDOW, <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>display<span class="k2">)</span> <span class="k3">&amp;</span> ALLEGRO_FULLSCREEN_WINDOW<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc ( Arvidsson)</author>
		<pubDate>Sun, 03 Dec 2017 17:02:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok thank you a lot, you reduced a non-working 25 lines function to a beautiful single line of code <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (taiwing)</author>
		<pubDate>Sun, 03 Dec 2017 17:43:27 +0000</pubDate>
	</item>
</rss>
