From a4b33a9a95fbbe1e198c87e9aacab43ad7fdeee2 Mon Sep 17 00:00:00 2001 From: ToadKing Date: Sun, 3 Mar 2013 15:45:29 -0500 Subject: [PATCH] get touch navigation working fix colors for GL make seperate option list for non-consoles --- frontend/menu/rgui.c | 28 ++++++++++++++++++++++++++-- frontend/menu/rmenu_generic.c | 32 ++++++++++++++++++++++++++++++++ gfx/gl.c | 13 ++----------- 3 files changed, 60 insertions(+), 13 deletions(-) diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index e7f315f2f5..f69a356adc 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -261,7 +261,11 @@ static uint16_t gray_filler(unsigned x, unsigned y) x >>= 1; y >>= 1; unsigned col = ((x + y) & 1) + 1; +#ifdef GEKKO return (6 << 12) | (col << 8) | (col << 4) | (col << 0); +#else + return (col << 13) | (col << 9) | (col << 5) | (12 << 0); +#endif } static uint16_t green_filler(unsigned x, unsigned y) @@ -269,7 +273,11 @@ static uint16_t green_filler(unsigned x, unsigned y) x >>= 1; y >>= 1; unsigned col = ((x + y) & 1) + 1; +#ifdef GEKKO return (6 << 12) | (col << 8) | (col << 5) | (col << 0); +#else + return (col << 13) | (col << 10) | (col << 5) | (12 << 0); +#endif } static void fill_rect(uint16_t *buf, unsigned pitch, @@ -297,7 +305,11 @@ static void blit_line(rgui_handle_t *rgui, if (col) rgui->frame_buf[(y + j) * (rgui->frame_buf_pitch >> 1) + (x + i)] = green ? +#ifdef GEKKO (3 << 0) | (10 << 4) | (3 << 8) | (7 << 12) : 0x7FFF; +#else + (15 << 0) | (7 << 4) | (15 << 8) | (7 << 12) : 0xFFFF; +#endif } } @@ -927,6 +939,7 @@ static void rgui_settings_populate_entries(rgui_handle_t *rgui) { rgui_list_clear(rgui->folder_buf); +#ifdef RARCH_CONSOLE RGUI_MENU_ITEM("Rewind", RGUI_SETTINGS_REWIND_ENABLE); RGUI_MENU_ITEM("Rewind granularity", RGUI_SETTINGS_REWIND_GRANULARITY); if (g_extern.main_is_init) @@ -956,15 +969,26 @@ static void rgui_settings_populate_entries(rgui_handle_t *rgui) #ifdef HAVE_LIBRETRO_MANAGEMENT RGUI_MENU_ITEM("Core", RGUI_SETTINGS_CORE); #endif -#ifdef RARCH_CONSOLE RGUI_MENU_ITEM("Controller #1 Config", RGUI_SETTINGS_CONTROLLER_1); RGUI_MENU_ITEM("Controller #2 Config", RGUI_SETTINGS_CONTROLLER_2); RGUI_MENU_ITEM("Controller #3 Config", RGUI_SETTINGS_CONTROLLER_3); RGUI_MENU_ITEM("Controller #4 Config", RGUI_SETTINGS_CONTROLLER_4); -#endif RGUI_MENU_ITEM("Debug Text", RGUI_SETTINGS_DEBUG_TEXT); RGUI_MENU_ITEM("Restart RetroArch", RGUI_SETTINGS_RESTART_EMULATOR); RGUI_MENU_ITEM("Exit RetroArch", RGUI_SETTINGS_QUIT_EMULATOR); +#else + RGUI_MENU_ITEM("Save State", RGUI_SETTINGS_SAVESTATE_SAVE); + RGUI_MENU_ITEM("Load State", RGUI_SETTINGS_SAVESTATE_LOAD); + RGUI_MENU_ITEM("Take Screenshot", RGUI_SETTINGS_SCREENSHOT); + RGUI_MENU_ITEM("Restart Game", RGUI_SETTINGS_RESTART_GAME); + RGUI_MENU_ITEM("Hardware filtering", RGUI_SETTINGS_VIDEO_FILTER); + RGUI_MENU_ITEM("Aspect Ratio", RGUI_SETTINGS_VIDEO_ASPECT_RATIO); + RGUI_MENU_ITEM("Rotation", RGUI_SETTINGS_VIDEO_ROTATION); + RGUI_MENU_ITEM("Mute Audio", RGUI_SETTINGS_AUDIO_MUTE); + RGUI_MENU_ITEM("Audio Control Rate", RGUI_SETTINGS_AUDIO_CONTROL_RATE); + RGUI_MENU_ITEM("Audio Resampler", RGUI_SETTINGS_RESAMPLER_TYPE); + RGUI_MENU_ITEM("Exit RetroArch", RGUI_SETTINGS_QUIT_EMULATOR); +#endif } static void rgui_settings_controller_populate_entries(rgui_handle_t *rgui) diff --git a/frontend/menu/rmenu_generic.c b/frontend/menu/rmenu_generic.c index 6950001143..6d93d712d7 100644 --- a/frontend/menu/rmenu_generic.c +++ b/frontend/menu/rmenu_generic.c @@ -140,8 +140,40 @@ bool rmenu_iterate(void) driver.input->poll(NULL); +#ifdef HAVE_OVERLAY + if (driver.overlay) + { + driver.overlay_state = 0; + + unsigned device = input_overlay_full_screen(driver.overlay) ? + RARCH_DEVICE_POINTER_SCREEN : RETRO_DEVICE_POINTER; + + bool polled = false; + for (unsigned i = 0; + input_input_state_func(NULL, 0, device, i, RETRO_DEVICE_ID_POINTER_PRESSED); + i++) + { + int16_t x = input_input_state_func(NULL, 0, + device, i, RETRO_DEVICE_ID_POINTER_X); + int16_t y = input_input_state_func(NULL, 0, + device, i, RETRO_DEVICE_ID_POINTER_Y); + + driver.overlay_state |= input_overlay_poll(driver.overlay, x, y); + polled = true; + } + + if (!polled) + input_overlay_poll_clear(driver.overlay); + } +#endif + for (unsigned i = 0; i < 16; i++) + { input_state |= driver.input->input_state(NULL, binds, 0, RETRO_DEVICE_JOYPAD, 0, i) ? (1ULL << i) : 0; +#ifdef HAVE_OVERLAY + input_state |= driver.overlay_state & (1ULL << i) ? (1ULL << i) : 0; +#endif + } trigger_state = input_state & ~old_input_state; bool do_held = input_state & ((1ULL << RETRO_DEVICE_ID_JOYPAD_UP) | (1ULL << RETRO_DEVICE_ID_JOYPAD_DOWN) | (1ULL << RETRO_DEVICE_ID_JOYPAD_LEFT) | (1ULL << RETRO_DEVICE_ID_JOYPAD_RIGHT)); diff --git a/gfx/gl.c b/gfx/gl.c index 223d7efc47..814e648cc7 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1265,24 +1265,16 @@ static void gl_pbo_async_readback(void *data) #ifdef HAVE_RGUI static inline void gl_draw_rgui(void *data) { - static const GLfloat white_color_rgui[16] = { - 1.0f, 1.0f, 1.0f, 0.75f, - 1.0f, 1.0f, 1.0f, 0.75f, - 1.0f, 1.0f, 1.0f, 0.75f, - 1.0f, 1.0f, 1.0f, 0.75f, - }; - gl_t *gl = (gl_t*)data; gl->coords.tex_coord = tex_coords; - gl->coords.color = white_color_rgui; glBindTexture(GL_TEXTURE_2D, gl->rgui_texture); glPixelStorei(GL_UNPACK_ALIGNMENT, get_alignment(RGUI_WIDTH * 2)); // RGUI is always packed so pitch = width * bpp glTexImage2D(GL_TEXTURE_2D, - 0, GL_RGB, RGUI_WIDTH, RGUI_HEIGHT, 0, GL_RGB, - GL_UNSIGNED_SHORT_5_6_5, gl->menu_data); + 0, GL_RGBA, RGUI_WIDTH, RGUI_HEIGHT, 0, GL_RGBA, + GL_UNSIGNED_SHORT_4_4_4_4, gl->menu_data); gl_shader_use_func(gl, 0); gl_shader_set_coords_func(gl, &gl->coords, &gl->mvp_no_rot); @@ -1292,7 +1284,6 @@ static inline void gl_draw_rgui(void *data) glDisable(GL_BLEND); gl->coords.tex_coord = gl->tex_coords; - gl->coords.color = white_color; } #endif