From a70c6b9b1e2bcf7a5a207017d6c40f5254f6ef98 Mon Sep 17 00:00:00 2001 From: Hristo Kovachev Date: Sat, 25 Mar 2006 19:16:45 +0000 Subject: Patch #4913 by David Rothenberger with some changes by me: add only backlight on first keypress to the lcd remotes, too. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9253 a1c6a512-1295-4272-9138-f99709370657 --- uisimulator/sdl/button.c | 60 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 57 insertions(+), 3 deletions(-) (limited to 'uisimulator') diff --git a/uisimulator/sdl/button.c b/uisimulator/sdl/button.c index bf0396e18d..b371643c6f 100644 --- a/uisimulator/sdl/button.c +++ b/uisimulator/sdl/button.c @@ -44,6 +44,14 @@ void set_backlight_filter_keypress(bool value) { filter_first_keypress = value; } +#ifdef HAVE_REMOTE_LCD +static bool remote_filter_first_keypress; + +void set_remote_backlight_filter_keypress(bool value) +{ + remote_filter_first_keypress = value; +} +#endif #endif void button_event(int key, bool pressed) @@ -56,6 +64,12 @@ void button_event(int key, bool pressed) static int repeat_count = 0; static bool repeat = false; static bool post = false; +#ifdef CONFIG_BACKLIGHT + static bool skip_release = false; +#ifdef HAVE_REMOTE_LCD + static bool skip_remote_release = false; +#endif +#endif switch (key) { @@ -169,11 +183,26 @@ void button_event(int key, bool pressed) /* Find out if a key has been released */ diff = btn ^ lastbtn; - if(diff && (btn & diff) == 0) { +#ifdef CONFIG_BACKLIGHT +#ifdef HAVE_REMOTE_LCD + if(diff & BUTTON_REMOTE) + if(!skip_remote_release) + queue_post(&button_queue, BUTTON_REL | diff, NULL); + else + skip_remote_release = false; + else +#endif + if(!skip_release) + queue_post(&button_queue, BUTTON_REL | diff, NULL); + else + skip_release = false; +#else queue_post(&button_queue, BUTTON_REL | diff, NULL); +#endif } + else { if ( btn ) @@ -223,15 +252,40 @@ void button_event(int key, bool pressed) if (queue_empty(&button_queue)) { queue_post(&button_queue, BUTTON_REPEAT | btn, NULL); +#ifdef CONFIG_BACKLIGHT +#ifdef HAVE_REMOTE_LCD + if(btn & BUTTON_REMOTE) + { + if(skip_remote_release) + skip_remote_release = false; + } + else +#endif + if(skip_release) + skip_release = false; +#endif post = false; } } else { #ifdef CONFIG_BACKLIGHT - if ( !filter_first_keypress || is_backlight_on()) -#endif +#ifdef HAVE_REMOTE_LCD + if (btn & BUTTON_REMOTE) { + if (!remote_filter_first_keypress || is_remote_backlight_on()) + queue_post(&button_queue, btn, NULL); + else + skip_remote_release = true; + } + else +#endif + if (!filter_first_keypress || is_backlight_on()) + queue_post(&button_queue, btn, NULL); + else + skip_release = true; +#else /* no backlight, nothing to skip */ queue_post(&button_queue, btn, NULL); +#endif post = false; } -- cgit v1.2.3