<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>weird mouse issue</title>
		<link>http://www.allegro.cc/forums/view/615216</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 26 Mar 2015 09:27:04 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ive added mouse functionality to my game and a strange thing happens, any time i move the mouse outside the game display window for more then a second or two the program exits. It doesn&#39;t crash, it just exits with a normal status zero. (obviously thats without grab_mouse) but when i use grab_mouse the same thing occurs if i have the mouse at any of the corners for the same length of time. I have no code which should allow this to occur... any help would be very appreciated.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bill99)</author>
		<pubDate>Wed, 25 Mar 2015 04:23:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You should show code and also try to produce a minimal example that reproduces this. Also, you ran it from a console and it is returning 0? On what conditions do you return from your program? Link the the allegro debug libraries and when your program runs, look at the allegro.log file created for clues.</p><p>And what versions are you using... compiler, allegro, and what os
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 25 Mar 2015 05:02:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here is a minimal example that reproduces the effect:
</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;iostream&gt;</span>
<span class="number">  2</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/debug.h"</span>
<span class="number">  6</span><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  9</span><span class="k2">{</span>
<span class="number"> 10</span>    <span class="c">//initialize allegro</span>
<span class="number"> 11</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"> 12</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"> 13</span>    <span class="c">// initialize display</span>
<span class="number"> 14</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY_MODE"><span class="a">ALLEGRO_DISPLAY_MODE</span></a> DisplayData<span class="k2">;</span>
<span class="number"> 15</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><a href="http://www.allegro.cc/manual/al_get_num_display_modes"><span class="a">al_get_num_display_modes</span></a><span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">1</span>, <span class="k3">&amp;</span>DisplayData<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>    <span class="k1">unsigned</span> <span class="k1">short</span> ScreenHeight <span class="k3">=</span> <span class="n">640</span><span class="k2">;</span>
<span class="number"> 17</span>    <span class="k1">unsigned</span> <span class="k1">short</span> ScreenWidth <span class="k3">=</span> <span class="n">640</span><span class="k2">;</span>
<span class="number"> 18</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"> 19</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>ScreenHeight, ScreenWidth<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>    <span class="c">// initialize Keyboard</span>
<span class="number"> 21</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"> 22</span>    <span class="c">// initialize mouse</span>
<span class="number"> 23</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"> 24</span>    <span class="c">// Initalize events</span>
<span class="number"> 25</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span> EventQueue <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"> 26</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>EventQueue, <a href="http://www.allegro.cc/manual/al_get_mouse_event_source"><span class="a">al_get_mouse_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</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>EventQueue, <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"> 28</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> Events<span class="k2">;</span>
<span class="number"> 29</span>
<span class="number"> 30</span>    <span class="k1">bool</span> Run <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 31</span>    <span class="k1">while</span><span class="k2">(</span>Run <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span>
<span class="number"> 32</span>    <span class="k2">{</span>
<span class="number"> 33</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>EventQueue, <span class="k3">&amp;</span> Events<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span>        <span class="k1">if</span><span class="k2">(</span>Events.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span> <span class="c">// exit on escape</span>
<span class="number"> 35</span>        <span class="k2">{</span>
<span class="number"> 36</span>            Run <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 37</span>        <span class="k2">}</span>
<span class="number"> 38</span>        <span class="k1">if</span><span class="k2">(</span>Events.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_BUTTON_DOWN<span class="k2">)</span>
<span class="number"> 39</span>        <span class="k2">{</span>
<span class="number"> 40</span>            std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Mouse Event Detected. \n"</span><span class="k2">;</span> <span class="c">// to verify mouse events work</span>
<span class="number"> 41</span>        <span class="k2">}</span>
<span class="number"> 42</span>
<span class="number"> 43</span>    <span class="k2">}</span>
<span class="number"> 44</span>
<span class="number"> 45</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="n">0</span><span class="k2">;</span>
<span class="number"> 48</span><span class="k2">}</span>
</div></div><p>

in order to get the exit to happen just wiggle the cursor around your desktop both on and off of the display. i added the debug.h file but could find no log. </p><p>i am running windows 7 home premium sp 1 64 bit, allegro 5 (the most recent stable release), mingw gcc 4.8.1
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bill99)</author>
		<pubDate>Wed, 25 Mar 2015 12:20:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Change this part of your 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="k1">if</span><span class="k2">(</span>Events.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span> <span class="c">// exit on escape</span>
<span class="number"> 2</span><span class="k2">{</span>
<span class="number"> 3</span>    Run <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 4</span><span class="k2">}</span>
</div></div><p>

To this:
</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="k1">if</span><span class="k2">(</span>Events.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN<span class="k2">)</span>
<span class="number"> 2</span><span class="k2">{</span>
<span class="number"> 3</span>    <span class="k1">if</span><span class="k2">(</span>Events.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span> <span class="c">// exit on escape</span>
<span class="number"> 4</span>    <span class="k2">{</span>
<span class="number"> 5</span>        Run <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 6</span>    <span class="k2">}</span>
<span class="number"> 7</span><span class="k2">}</span>
</div></div><p>

You have to check first what kind of event you have got from the queue and then process is.</p><p>At first glance it seems that when the mouse leaves window area the ALLEGRO_EVENT_MOUSE_LEAVE_DISPLAY is fired, and the values of that event match the ALLEGRO_KEY_ESCAPE condition you are checking for ( without the check for event type ).<br />And that makes your program exit, just like you wanted. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Izual)</author>
		<pubDate>Wed, 25 Mar 2015 12:45:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>One thing to know is that allegro stores the event data in a &quot;shared&quot; data type. It shares space in the same structure for the different event types. So you ALWAYS want to check what type the event is when checking for the actual events, otherways odd things can and will happen.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Thu, 26 Mar 2015 05:30:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yup, That did it, thanks! And I&#39;ll be sure to remember that in the future! <img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bill99)</author>
		<pubDate>Thu, 26 Mar 2015 09:27:04 +0000</pubDate>
	</item>
</rss>
