Author: wmb
Date: Wed Jul 6 04:22:55 2011
New Revision: 2331
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2331
Log:
GUI - interact with mouse in stream mode instead of remote-polling mode to decrease command traffic over the PS/2 bus.
Modified:
cpu/arm/olpc/1.75/mfgtest.fth
ofw/gui/dialog.fth
ofw/gui/iconmenu.fth
ofw/gui/mouse.fth
Modified: cpu/arm/olpc/1.75/mfgtest.fth
==============================================================================
--- cpu/arm/olpc/1.75/mfgtest.fth Wed Jul 6 04:20:34 2011 (r2330)
+++ cpu/arm/olpc/1.75/mfgtest.fth Wed Jul 6 04:22:55 2011 (r2331)
@@ -24,7 +24,7 @@
begin
key? if key drop refresh exit then
mouse-ih if
- 10 get-event if
+ mouse-event? if
\ Ignore movement, act only on a button down event
nip nip if wait-buttons-up refresh exit then
then
Modified: ofw/gui/dialog.fth
==============================================================================
--- ofw/gui/dialog.fth Wed Jul 6 04:20:34 2011 (r2330)
+++ ofw/gui/dialog.fth Wed Jul 6 04:22:55 2011 (r2331)
@@ -287,7 +287,7 @@
mouse-ih 0= if drop false exit then
>r
false to dialog-ready?
- begin 10 get-event while ( x y buttons )
+ begin mouse-event? while ( x y buttons )
remove-mouse-cursor ( x y buttons )
-rot update-position ( buttons )
r@ mouse-buttons ( ?? )
Modified: ofw/gui/iconmenu.fth
==============================================================================
--- ofw/gui/iconmenu.fth Wed Jul 6 04:20:34 2011 (r2330)
+++ ofw/gui/iconmenu.fth Wed Jul 6 04:22:55 2011 (r2331)
@@ -424,7 +424,7 @@
: do-mouse ( - )
mouse-ih 0= if exit then
- begin 10 get-event while ( x y buttons )
+ begin mouse-event? while ( x y buttons )
remove-mouse-cursor
-rot update-position ( buttons )
new-sq?
@@ -452,15 +452,6 @@
" screen" open-dev is screen-ih
then
;
-: ?open-mouse ( -- )
- mouse-ih 0= if
- " mouse" open-dev is mouse-ih
- mouse-ih 0= if
- " /mouse" open-dev to mouse-ih
- then
- mouse-ih if alloc-mouse-cursor then
- then
-;
true config-flag menu?
0 value default-selection
@@ -472,7 +463,13 @@
: .menu ( -- ) ." Type 'menu' to return to the menu" cr ;
-: wait-buttons-up ( -- ) begin 0 get-event drop nip nip 0= until ;
+: wait-buttons-up ( -- )
+ begin
+ mouse-event? if ( x y buttons )
+ nip nip 0= if exit then
+ then
+ again
+;
headers
: wait-return ( -- )
." ... Press any key to return to the menu ... "
@@ -481,7 +478,7 @@
begin
key? if key drop refresh exit then
mouse-ih if
- 10 get-event if
+ mouse-event? if
\ Ignore movement, act only on a button down event
nip nip if wait-buttons-up refresh exit then
then
@@ -505,13 +502,15 @@
' menu-interact to run-menu
: setup-graphics ( -- )
- ?open-screen set-menu-colors ?open-mouse
+ ?open-screen set-menu-colors
;
: setup-menu ( -- )
setup-graphics
+ ?open-mouse
cursor-off
gui-alerts
;
+: unsetup-menu ( -- ) ?close-mouse restore-scroller ;
defer current-menu ' clear to current-menu
: set-menu ( xt -- ) to current-menu current-menu ;
@@ -538,7 +537,7 @@
screen-wh ( color x y w y )
fill-rectangle-noff ( )
- restore-scroller
+ unsetup-menu
;
\ Note that menu establishes a new return stack state. Be sure to
Modified: ofw/gui/mouse.fth
==============================================================================
--- ofw/gui/mouse.fth Wed Jul 6 04:20:34 2011 (r2330)
+++ ofw/gui/mouse.fth Wed Jul 6 04:22:55 2011 (r2331)
@@ -172,6 +172,27 @@
endcase
;
headers
+
+0 value close-mouse?
+: ?close-mouse ( -- )
+ close-mouse? if
+ mouse-ih close-dev
+ 0 to mouse-ih
+ then
+;
+: ?open-mouse ( -- )
+ mouse-ih 0= dup to close-mouse? if
+ " mouse" open-dev is mouse-ih
+ mouse-ih 0= if
+ " /mouse" open-dev to mouse-ih
+ then
+ mouse-ih if alloc-mouse-cursor then
+ then
+;
+: mouse-event? ( -- false | x y buttons true )
+ " stream-poll?" mouse-ih $call-method
+;
+
\ LICENSE_BEGIN
\ Copyright (c) 2006 FirmWorks
\