diff options
author | Thomas Martitz <kugel@rockbox.org> | 2009-04-24 08:54:10 +0000 |
---|---|---|
committer | Thomas Martitz <kugel@rockbox.org> | 2009-04-24 08:54:10 +0000 |
commit | b0ac944364fcf9538b2f31dad40c994040e888d5 (patch) | |
tree | 1d2a63402f08379e95528e0507763f8693036b82 /firmware/backlight.c | |
parent | 17d9d80011413cc0fe9d06ca0cea0badde34030c (diff) | |
download | rockbox-b0ac944364fcf9538b2f31dad40c994040e888d5.tar.gz rockbox-b0ac944364fcf9538b2f31dad40c994040e888d5.zip |
Fix FS#10130 (Concurrent backlight function calls from backlight timeout settings menu) by ensuring that all calls of target-specific backlight code happen from backlight thread
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20778 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/backlight.c')
-rw-r--r-- | firmware/backlight.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/firmware/backlight.c b/firmware/backlight.c index 05bf007210..6a97f3402e 100644 --- a/firmware/backlight.c +++ b/firmware/backlight.c | |||
@@ -105,9 +105,11 @@ static inline void _remote_backlight_off(void) | |||
105 | enum { | 105 | enum { |
106 | BACKLIGHT_ON, | 106 | BACKLIGHT_ON, |
107 | BACKLIGHT_OFF, | 107 | BACKLIGHT_OFF, |
108 | BACKLIGHT_TMO_CHANGED, | ||
108 | #ifdef HAVE_REMOTE_LCD | 109 | #ifdef HAVE_REMOTE_LCD |
109 | REMOTE_BACKLIGHT_ON, | 110 | REMOTE_BACKLIGHT_ON, |
110 | REMOTE_BACKLIGHT_OFF, | 111 | REMOTE_BACKLIGHT_OFF, |
112 | REMOTE_BACKLIGHT_TMO_CHANGED, | ||
111 | #endif | 113 | #endif |
112 | #if defined(_BACKLIGHT_FADE_BOOST) || defined(_BACKLIGHT_FADE_ENABLE) | 114 | #if defined(_BACKLIGHT_FADE_BOOST) || defined(_BACKLIGHT_FADE_ENABLE) |
113 | BACKLIGHT_FADE_FINISH, | 115 | BACKLIGHT_FADE_FINISH, |
@@ -118,6 +120,7 @@ enum { | |||
118 | #ifdef HAVE_BUTTON_LIGHT | 120 | #ifdef HAVE_BUTTON_LIGHT |
119 | BUTTON_LIGHT_ON, | 121 | BUTTON_LIGHT_ON, |
120 | BUTTON_LIGHT_OFF, | 122 | BUTTON_LIGHT_OFF, |
123 | BUTTON_LIGHT_TMO_CHANGED, | ||
121 | #endif | 124 | #endif |
122 | #ifdef BACKLIGHT_DRIVER_CLOSE | 125 | #ifdef BACKLIGHT_DRIVER_CLOSE |
123 | BACKLIGHT_QUIT, | 126 | BACKLIGHT_QUIT, |
@@ -176,7 +179,7 @@ void buttonlight_off(void) | |||
176 | void buttonlight_set_timeout(int value) | 179 | void buttonlight_set_timeout(int value) |
177 | { | 180 | { |
178 | _buttonlight_timeout = HZ * value; | 181 | _buttonlight_timeout = HZ * value; |
179 | buttonlight_update_state(); | 182 | queue_post(&backlight_queue, BUTTON_LIGHT_TMO_CHANGED, 0); |
180 | } | 183 | } |
181 | 184 | ||
182 | #endif /* HAVE_BUTTON_LIGHT */ | 185 | #endif /* HAVE_BUTTON_LIGHT */ |
@@ -633,6 +636,7 @@ void backlight_thread(void) | |||
633 | switch(ev.id) | 636 | switch(ev.id) |
634 | { /* These events are only processed if backlight isn't locked */ | 637 | { /* These events are only processed if backlight isn't locked */ |
635 | #ifdef HAVE_REMOTE_LCD | 638 | #ifdef HAVE_REMOTE_LCD |
639 | case REMOTE_BACKLIGHT_TMO_CHANGED | ||
636 | case REMOTE_BACKLIGHT_ON: | 640 | case REMOTE_BACKLIGHT_ON: |
637 | remote_backlight_update_state(); | 641 | remote_backlight_update_state(); |
638 | break; | 642 | break; |
@@ -643,6 +647,7 @@ void backlight_thread(void) | |||
643 | break; | 647 | break; |
644 | #endif /* HAVE_REMOTE_LCD */ | 648 | #endif /* HAVE_REMOTE_LCD */ |
645 | 649 | ||
650 | case BACKLIGHT_TMO_CHANGED: | ||
646 | case BACKLIGHT_ON: | 651 | case BACKLIGHT_ON: |
647 | backlight_update_state(); | 652 | backlight_update_state(); |
648 | break; | 653 | break; |
@@ -662,6 +667,7 @@ void backlight_thread(void) | |||
662 | break; | 667 | break; |
663 | #endif | 668 | #endif |
664 | #ifdef HAVE_BUTTON_LIGHT | 669 | #ifdef HAVE_BUTTON_LIGHT |
670 | case BUTTON_LIGHT_TMO_CHANGED: | ||
665 | case BUTTON_LIGHT_ON: | 671 | case BUTTON_LIGHT_ON: |
666 | buttonlight_update_state(); | 672 | buttonlight_update_state(); |
667 | break; | 673 | break; |
@@ -806,14 +812,14 @@ int backlight_get_current_timeout(void) | |||
806 | void backlight_set_timeout(int value) | 812 | void backlight_set_timeout(int value) |
807 | { | 813 | { |
808 | backlight_timeout_normal = HZ * value; | 814 | backlight_timeout_normal = HZ * value; |
809 | backlight_update_state(); | 815 | queue_post(&backlight_queue, BACKLIGHT_TMO_CHANGED, 0); |
810 | } | 816 | } |
811 | 817 | ||
812 | #if CONFIG_CHARGING | 818 | #if CONFIG_CHARGING |
813 | void backlight_set_timeout_plugged(int value) | 819 | void backlight_set_timeout_plugged(int value) |
814 | { | 820 | { |
815 | backlight_timeout_plugged = HZ * value; | 821 | backlight_timeout_plugged = HZ * value; |
816 | backlight_update_state(); | 822 | queue_post(&backlight_queue, BACKLIGHT_TMO_CHANGED, 0); |
817 | } | 823 | } |
818 | #endif /* CONFIG_CHARGING */ | 824 | #endif /* CONFIG_CHARGING */ |
819 | 825 | ||
@@ -833,7 +839,7 @@ void backlight_set_on_button_hold(int index) | |||
833 | index = 0; | 839 | index = 0; |
834 | 840 | ||
835 | backlight_on_button_hold = index; | 841 | backlight_on_button_hold = index; |
836 | backlight_update_state(); | 842 | queue_post(&backlight_queue, BACKLIGHT_TMO_CHANGED, 0); |
837 | } | 843 | } |
838 | #endif /* HAS_BUTTON_HOLD */ | 844 | #endif /* HAS_BUTTON_HOLD */ |
839 | 845 | ||
@@ -872,14 +878,14 @@ void remote_backlight_off(void) | |||
872 | void remote_backlight_set_timeout(int value) | 878 | void remote_backlight_set_timeout(int value) |
873 | { | 879 | { |
874 | remote_backlight_timeout_normal = HZ * value; | 880 | remote_backlight_timeout_normal = HZ * value; |
875 | remote_backlight_update_state(); | 881 | queue_post(&backlight_queue, REMOTE_BACKLIGHT_TMO_CHANGED, 0); |
876 | } | 882 | } |
877 | 883 | ||
878 | #if CONFIG_CHARGING | 884 | #if CONFIG_CHARGING |
879 | void remote_backlight_set_timeout_plugged(int value) | 885 | void remote_backlight_set_timeout_plugged(int value) |
880 | { | 886 | { |
881 | remote_backlight_timeout_plugged = HZ * value; | 887 | remote_backlight_timeout_plugged = HZ * value; |
882 | remote_backlight_update_state(); | 888 | queue_post(&backlight_queue, REMOTE_BACKLIGHT_TMO_CHANGED, 0); |
883 | } | 889 | } |
884 | #endif /* CONFIG_CHARGING */ | 890 | #endif /* CONFIG_CHARGING */ |
885 | 891 | ||
@@ -899,7 +905,7 @@ void remote_backlight_set_on_button_hold(int index) | |||
899 | index = 0; | 905 | index = 0; |
900 | 906 | ||
901 | remote_backlight_on_button_hold = index; | 907 | remote_backlight_on_button_hold = index; |
902 | remote_backlight_update_state(); | 908 | queue_post(&backlight_queue, REMOTE_BACKLIGHT_TMO_CHANGED, 0); |
903 | } | 909 | } |
904 | #endif /* HAS_REMOTE_BUTTON_HOLD */ | 910 | #endif /* HAS_REMOTE_BUTTON_HOLD */ |
905 | 911 | ||