<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>get_mouse_mickeys() and OS X</title>
		<link>http://www.allegro.cc/forums/view/587372</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 05 Sep 2006 18:51:13 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ve been working on a project that uses Allegro 4.2-svn (svn is needed for intel Mac support) and OpenLayer (and thus AllegroGL and the other OpenLayer support libraries).  Everything works fine on Windows and Linux (except for the fact that I have to rest(0) before calling get_mouse_mickeys() on Linux for some odd reason).  However, on OS X, only the first call to get_mouse_mickeys() sets the arguments to something other than 0.  After the fist call, mickeyx and mickeyy are always set to 0.</p><p>I am curently using OS X 10.4.7 and Xcode (FWIW, I&#39;ve also used gcc on the command line as well) to build the project. I have tried the lastest (as of yesterday) SVN of Allegro.  Oddly, the exmouse program seems to work perfectly.  My project is fullscreen, so that may be part of the problem.  Everything other than get_mouse_mickeys() seems to be working.</p><p>I have tried calling poll_mouse() before get_mouse_mickeys, but that doesn&#39;t make a difference.</p><p>If anyone has any ideas, it would be greatly appreciated.</p><p>Thanks,<br />ben
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ben Moreno)</author>
		<pubDate>Fri, 01 Sep 2006 22:35:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
except for the fact that I have to rest(0) before calling get_mouse_mickeys() on Linux for some odd reason
</p></div></div><p>
That&#39;s weird. You&#39;re not using the hardware cursor, are you?</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Oddly, the exmouse program seems to work perfectly.
</p></div></div><p>
That&#39;s even stranger.<br />Can you post a small demo program that does reproduce the problem for you so we can test it?</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I have tried calling poll_mouse() before get_mouse_mickeys, but that doesn&#39;t make a difference.
</p></div></div><p>
Nah, it wouldn&#39;t. We should probably deprecate poll_mouse() at some point to tell people that it&#39;s a rather useless function...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Fri, 01 Sep 2006 22:50:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Is get_mouse_mickeys being called twice in the main loop? That would zero the 2nd call..
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Fri, 01 Sep 2006 23:27:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Mmm.
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td><span class="c">// This is C++</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">5</td><td><span class="k2">{</span></td></tr><tr><td class="number">6</td><td>  <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>  <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>  <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_FULLSCREEN, <span class="n">800</span>, <span class="n">600</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>  <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a><span class="k2">)</span></td></tr><tr><td class="number">10</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">11</td><td>      <span class="k1">int</span> x, y<span class="k2">;</span></td></tr><tr><td class="number">12</td><td>      <a href="http://www.allegro.cc/manual/get_mouse_mickeys" target="_blank"><span class="a">get_mouse_mickeys</span></a><span class="k2">(</span><span class="k3">&amp;</span>x, <span class="k3">&amp;</span>y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>      <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">100</span>, <span class="n">100</span>, </td></tr><tr><td class="number">14</td><td>                    <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">0</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span>, <span class="s">"(%d, %d)      "</span>, x, y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>      <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">50</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//replace with rest(0)</span></td></tr><tr><td class="number">16</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">17</td><td>  <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT, <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td><span class="k2">}</span></td></tr><tr><td class="number">20</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>

Works fine, but if I replace the rest(50) with rest(0), it always returns zero as reported.<br />OS X mouse coordinates are floats; is it possible that the loop runs so fast that the mouse move per cycle always gets rounded down to zero?</p><p>I&#39;ll have a look.</p><p>Pete
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Hull)</author>
		<pubDate>Sat, 02 Sep 2006 00:27:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
So a temporary solution would be to only call the rest(0) if the OS is linux?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Sat, 02 Sep 2006 00:29:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Actually, I&#39;m wrong, it only appears to always return zero. New program (attached)
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">4</td><td><span class="k2">{</span></td></tr><tr><td class="number">5</td><td>  <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>  <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>  <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_FULLSCREEN, <span class="n">800</span>, <span class="n">600</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>  <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a><span class="k2">)</span></td></tr><tr><td class="number">9</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">10</td><td>      <span class="k1">int</span> x, y<span class="k2">;</span></td></tr><tr><td class="number">11</td><td>      <a href="http://www.allegro.cc/manual/get_mouse_mickeys" target="_blank"><span class="a">get_mouse_mickeys</span></a><span class="k2">(</span><span class="k3">&amp;</span>x, <span class="k3">&amp;</span>y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>      <span class="k1">if</span> <span class="k2">(</span>x<span class="k3">!</span><span class="k3">=</span><span class="n">0</span> <span class="k3">|</span><span class="k3">|</span> y<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">13</td><td>        <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">100</span>, <span class="n">100</span>,</td></tr><tr><td class="number">14</td><td>                    <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">0</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span>, <span class="s">"(%d, %d)      "</span>, x, y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">16</td><td>      <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">18</td><td>  <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT, <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td><span class="k2">}</span></td></tr><tr><td class="number">21</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>
How does this work for you, Ben?</p><p>Otherwise I have a simple patch to use floats internally when calculating the mickeys, attached. Can you try it, if the program above doesn&#39;t work.</p><p>Pete
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Hull)</author>
		<pubDate>Sat, 02 Sep 2006 01:02:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Is it possible that the rest(0) is causing the process to switch to the OS and back again and that is destroying the old mouse data?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Sun, 03 Sep 2006 19:23:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I tried the code you posted, it seems to work correctly. The problem doesn&#39;t appear to be rest(0) - I&#39;ve tried running the program with rest() commented out.  I&#39;ll try the patch, though, to see if that helps.</p><p>Thanks for helping.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ben Moreno)</author>
		<pubDate>Tue, 05 Sep 2006 18:51:13 +0000</pubDate>
	</item>
</rss>
