summaryrefslogtreecommitdiff
path: root/firmware/target/hosted
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2010-11-10 15:25:15 +0000
committerThomas Martitz <kugel@rockbox.org>2010-11-10 15:25:15 +0000
commit33af0dec28cf31be0ce7195b90546861efcce76f (patch)
treef106c9118c9191bff00e1468c98540787081c0e8 /firmware/target/hosted
parente134021e1b05f797cffd28c6b4ee72a963ff3812 (diff)
downloadrockbox-33af0dec28cf31be0ce7195b90546861efcce76f.tar.gz
rockbox-33af0dec28cf31be0ce7195b90546861efcce76f.zip
Touchscreen: Improved scroll threshold
Remove the hardcoded (and way too small) scroll threshold (the distance moved in pixels before we think the users wants to scroll) and replace it with something based on the actual DPI of the screen. On Android we call the API for that, on other touchscreens we reimplemented Android's formula (as of 2.2) and calculate it. Flyspray: 11727 git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28548 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/hosted')
-rw-r--r--firmware/target/hosted/android/lcd-android.c26
-rw-r--r--firmware/target/hosted/sdl/lcd-sdl.c6
2 files changed, 32 insertions, 0 deletions
diff --git a/firmware/target/hosted/android/lcd-android.c b/firmware/target/hosted/android/lcd-android.c
index 78b1f12f7f..f4ef7b5e75 100644
--- a/firmware/target/hosted/android/lcd-android.c
+++ b/firmware/target/hosted/android/lcd-android.c
@@ -35,6 +35,8 @@ static jmethodID java_lcd_update;
35static jmethodID java_lcd_update_rect; 35static jmethodID java_lcd_update_rect;
36 36
37static bool display_on; 37static bool display_on;
38static int dpi;
39static int scroll_threshold;
38 40
39void lcd_init_device(void) 41void lcd_init_device(void)
40{ 42{
@@ -77,6 +79,20 @@ void lcd_init_device(void)
77 RockboxFramebuffer_class, 79 RockboxFramebuffer_class,
78 "java_lcd_update_rect", 80 "java_lcd_update_rect",
79 "(IIII)V"); 81 "(IIII)V");
82
83 jmethodID get_dpi = e->GetMethodID(env_ptr,
84 RockboxFramebuffer_class,
85 "getDpi", "()I");
86
87 jmethodID get_scroll_threshold
88 = e->GetMethodID(env_ptr,
89 RockboxFramebuffer_class,
90 "getScrollThreshold", "()I");
91
92 dpi = e->CallIntMethod(env_ptr, RockboxFramebuffer_instance,
93 get_dpi);
94 scroll_threshold = e->CallIntMethod(env_ptr, RockboxFramebuffer_instance,
95 get_scroll_threshold);
80 display_on = true; 96 display_on = true;
81} 97}
82 98
@@ -101,6 +117,16 @@ bool lcd_active(void)
101 return display_on; 117 return display_on;
102} 118}
103 119
120int lcd_get_dpi(void)
121{
122 return dpi;
123}
124
125int touchscreen_get_scroll_threshold(void)
126{
127 return scroll_threshold;
128}
129
104/* 130/*
105 * (un)block lcd updates. 131 * (un)block lcd updates.
106 * 132 *
diff --git a/firmware/target/hosted/sdl/lcd-sdl.c b/firmware/target/hosted/sdl/lcd-sdl.c
index 15e4ba95c3..96b1a04aa6 100644
--- a/firmware/target/hosted/sdl/lcd-sdl.c
+++ b/firmware/target/hosted/sdl/lcd-sdl.c
@@ -111,3 +111,9 @@ void sdl_set_gradient(SDL_Surface *surface, SDL_Color *start, SDL_Color *end,
111 SDL_SetPalette(surface, SDL_LOGPAL|SDL_PHYSPAL, palette, first, steps); 111 SDL_SetPalette(surface, SDL_LOGPAL|SDL_PHYSPAL, palette, first, steps);
112} 112}
113 113
114int lcd_get_dpi(void)
115{
116 /* TODO: find a way to query it from the OS, SDL doesn't support it
117 * directly; for now assume the more or less standard 96 */
118 return 96;
119}