test_codec/test_fps: Use pluginlib_touchscreen API to make them fit for touchscreen including point mode.

Enable test_fps on RaaA also.

Change-Id: Ifeb60d5ad30bde1f8a645cd9e9d5d5ae34f4425d
This commit is contained in:
Thomas Martitz 2012-01-27 00:15:15 +01:00
parent 049f3c782a
commit 93a4b32d03
3 changed files with 107 additions and 5 deletions

View file

@ -17,6 +17,7 @@ boomshine.lua
#ifdef HAVE_TEST_PLUGINS /* enable in advanced build options */
test_fps.c
#ifdef HAVE_ADJUSTABLE_CPU_FREQ
test_boost.c
#endif

View file

@ -19,6 +19,8 @@
*
****************************************************************************/
#include "plugin.h"
#include "lib/pluginlib_touchscreen.h"
#include "lib/pluginlib_exit.h"
/* All swcodec targets have BUTTON_SELECT apart from the H10 and M3 */
@ -42,7 +44,7 @@
#elif CONFIG_KEYPAD == SAMSUNG_YPR0_PAD
#define TESTCODEC_EXITBUTTON BUTTON_BACK
#elif defined(HAVE_TOUCHSCREEN)
#define TESTCODEC_EXITBUTTON BUTTON_TOPLEFT
#define TESTCODEC_EXITBUTTON (BUTTON_BOTTOMMIDDLE|BUTTON_REL)
#else
#define TESTCODEC_EXITBUTTON BUTTON_SELECT
#endif
@ -807,6 +809,54 @@ exit:
return res;
}
#ifdef HAVE_TOUCHSCREEN
void cleanup(void)
{
rb->screens[0]->set_viewport(NULL);
}
#endif
static struct touchbutton button[] = {
{
.action = ACTION_STD_OK,
.title = "OK",
/* viewport runtime initialized, rest false/NULL */
}
};
void plugin_quit(void)
{
int btn;
#ifdef HAVE_TOUCHSCREEN
struct viewport *vp = &button[0].vp;
struct screen *lcd = rb->screens[SCREEN_MAIN];
rb->viewport_set_defaults(vp, SCREEN_MAIN);
const int border = 10;
const int height = 50;
lcd->set_viewport(vp);
/* button matches the bottom center in the grid */
vp->x = lcd->lcdwidth/3;
vp->width = lcd->lcdwidth/3;
vp->height = height;
vp->y = lcd->lcdheight - height - border;
touchbutton_draw(button, ARRAYLEN(button));
lcd->update_viewport();
if (rb->touchscreen_get_mode() == TOUCHSCREEN_POINT)
{
while (codec_action != CODEC_ACTION_HALT &&
touchbutton_get(button, ARRAYLEN(button)) != ACTION_STD_OK);
}
else
#endif
do {
btn = rb->button_get(true);
exit_on_usb(btn);
} while (codec_action != CODEC_ACTION_HALT && btn != TESTCODEC_EXITBUTTON);
}
/* plugin entry point */
enum plugin_status plugin_start(const void* parameter)
{
@ -839,6 +889,10 @@ enum plugin_status plugin_start(const void* parameter)
rb->lcd_clear_display();
rb->lcd_update();
#ifdef HAVE_TOUCHSCREEN
rb->touchscreen_set_mode(rb->global_settings->touch_mode);
#endif
enum
{
SPEED_TEST = 0,
@ -980,10 +1034,8 @@ menu:
close_wav();
log_text("Wrote /test.wav",true);
}
while (codec_action != CODEC_ACTION_HALT &&
rb->button_get(true) != TESTCODEC_EXITBUTTON);
}
plugin_quit();
#ifdef HAVE_ADJUSTABLE_CPU_FREQ
if(boost)

View file

@ -21,6 +21,8 @@
#include "plugin.h"
#include "lib/helper.h"
#include "lib/grey.h"
#include "lib/pluginlib_touchscreen.h"
#include "lib/pluginlib_exit.h"
#if (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
@ -39,6 +41,8 @@
#define FPS_QUIT (BUTTON_M|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == SAMSUNG_YPR0_PAD
#define FPS_QUIT BUTTON_BACK
#elif defined(HAVE_TOUCHSCREEN)
#define FPS_QUIT (BUTTON_BOTTOMMIDDLE|BUTTON_REL)
#elif defined(BUTTON_OFF)
#define FPS_QUIT BUTTON_OFF
#else
@ -356,6 +360,47 @@ static void time_greyscale(void)
}
#endif
static struct touchbutton button[] = {
{
.action = ACTION_STD_OK,
.title = "OK",
/* viewport runtime initialized, rest false/NULL */
}
};
void plugin_quit(void)
{
#ifdef HAVE_TOUCHSCREEN
struct viewport *vp = &button[0].vp;
struct screen *lcd = rb->screens[SCREEN_MAIN];
rb->viewport_set_defaults(vp, SCREEN_MAIN);
const int border = 10;
const int height = 50;
lcd->set_viewport(vp);
/* button matches the bottom center in the grid */
vp->x = lcd->lcdwidth/3;
vp->width = lcd->lcdwidth/3;
vp->height = height;
vp->y = lcd->lcdheight - height - border;
touchbutton_draw(button, ARRAYLEN(button));
lcd->update_viewport();
if (rb->touchscreen_get_mode() == TOUCHSCREEN_POINT)
{
while(touchbutton_get(button, ARRAYLEN(button)) != ACTION_STD_OK);
}
else
#endif
while (1)
{
int btn = rb->button_get(true);
exit_on_usb(btn);
if (btn == FPS_QUIT)
break;
}
}
/* plugin entry point */
enum plugin_status plugin_start(const void* parameter)
{
@ -367,6 +412,10 @@ enum plugin_status plugin_start(const void* parameter)
/* standard stuff */
(void)parameter;
#ifdef HAVE_TOUCHSCREEN
rb->touchscreen_set_mode(rb->global_settings->touch_mode);
#endif
log_init();
#if (CONFIG_PLATFORM & PLATFORM_NATIVE)
cpu_freq = *rb->cpu_frequency; /* remember CPU frequency */
@ -396,7 +445,7 @@ enum plugin_status plugin_start(const void* parameter)
backlight_use_settings();
/* wait until user closes plugin */
while (rb->button_get(true) != FPS_QUIT);
plugin_quit();
return PLUGIN_OK;
}