mirror of
https://github.com/libretro/RetroArch
synced 2025-03-25 16:44:01 +00:00
(PS3) Refactor OSK code - next thing should be abstracting it
This commit is contained in:
parent
6a9bc1bfa4
commit
fde4311ef5
@ -111,7 +111,7 @@ PPU_LDLIBS = $(FONT_LIBS) $(GL_LIBS) $(WHOLE_START) -lretro_ps3 $(WHOLE_END) -l
|
||||
|
||||
PPU_RANLIB = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ranlib.exe
|
||||
|
||||
DEFINES += -DHAVE_THREADS -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_OVERLAY -DHAVE_HEADSET -DHAVE_VID_CONTEXT -DHAVE_OPENGLES -DHAVE_OPENGLES1 -DHAVE_PSGL -DHAVE_CG -DHAVE_CG_RUNTIME_COMPILER -DHAVE_FBO -DHAVE_RARCH_MAIN_WRAP -DHAVE_RARCH_MAIN_IMPLEMENTATION -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_RSOUND -DHAVE_ZLIB -DWANT_MINIZ -DSINC_LOWER_QUALITY -D__CELLOS_LV2__ -DHAVE_NETPLAY=1 -DHAVE_SOCKET_LEGACY=1 -DHAVE_OSKUTIL -DHAVE_MOUSE -DHAVE_GRIFFIN=1 -DHAVE_MULTIMAN=1 -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT)
|
||||
DEFINES += -DHAVE_THREADS -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_OVERLAY -DHAVE_HEADSET -DHAVE_VID_CONTEXT -DHAVE_OPENGLES -DHAVE_OPENGLES1 -DHAVE_PSGL -DHAVE_CG -DHAVE_CG_RUNTIME_COMPILER -DHAVE_FBO -DHAVE_RARCH_MAIN_WRAP -DHAVE_RARCH_MAIN_IMPLEMENTATION -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_RSOUND -DHAVE_ZLIB -DWANT_MINIZ -DSINC_LOWER_QUALITY -D__CELLOS_LV2__ -DHAVE_NETPLAY=1 -DHAVE_SOCKET_LEGACY=1 -DHAVE_OSK -DHAVE_MOUSE -DHAVE_GRIFFIN=1 -DHAVE_MULTIMAN=1 -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT)
|
||||
|
||||
ifeq ($(DEBUG), 1)
|
||||
PPU_OPTIMIZE_LV := -O0 -g
|
||||
|
@ -411,6 +411,11 @@ void menu_init(void)
|
||||
shader_manager_init(rgui);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_OSK
|
||||
//FIXME - will go through a proper interface
|
||||
rgui->oskutil_handle = (ps3_osk_t*)oskutil_init(0);
|
||||
#endif
|
||||
|
||||
menu_init_history();
|
||||
rgui->last_time = rarch_get_time_usec();
|
||||
}
|
||||
@ -424,6 +429,12 @@ void menu_free(void)
|
||||
libretro_free_system_info(&rgui->info);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_OSK
|
||||
//FIXME - will go through a proper interface
|
||||
if (rgui->oskutil_handle)
|
||||
oskutil_free(rgui->oskutil_handle);
|
||||
#endif
|
||||
|
||||
file_list_free(rgui->menu_stack);
|
||||
file_list_free(rgui->selection_buf);
|
||||
|
||||
|
@ -308,9 +308,9 @@ typedef struct
|
||||
struct retro_system_info info;
|
||||
bool load_no_rom;
|
||||
|
||||
#ifdef HAVE_OSKUTIL
|
||||
#ifdef HAVE_OSK
|
||||
unsigned osk_param;
|
||||
oskutil_params oskutil_handle;
|
||||
ps3_osk_t *oskutil_handle;
|
||||
bool (*osk_init)(void *data);
|
||||
bool (*osk_callback)(void *data);
|
||||
#endif
|
||||
|
@ -1204,7 +1204,7 @@ static void set_keybind_digital(unsigned default_retro_joypad_id, uint64_t actio
|
||||
default_retro_joypad_id, keybind_action);
|
||||
}
|
||||
|
||||
#if defined(HAVE_OSKUTIL)
|
||||
#if defined(HAVE_OSK)
|
||||
#ifdef __CELLOS_LV2__
|
||||
|
||||
static bool osk_callback_enter_rsound(void *data)
|
||||
@ -1486,7 +1486,7 @@ static int set_setting_action(void *data, uint8_t menu_type, unsigned switchvalu
|
||||
case RGUI_ACTION_LEFT:
|
||||
case RGUI_ACTION_RIGHT:
|
||||
case RGUI_ACTION_OK:
|
||||
#ifdef HAVE_OSKUTIL
|
||||
#ifdef HAVE_OSK
|
||||
rgui->osk_init = osk_callback_enter_rsound_init;
|
||||
rgui->osk_callback = osk_callback_enter_rsound;
|
||||
#endif
|
||||
@ -1751,7 +1751,7 @@ static int set_setting_action(void *data, uint8_t menu_type, unsigned switchvalu
|
||||
}
|
||||
break;
|
||||
case SHADERMAN_SAVE_CGP:
|
||||
#ifdef HAVE_OSKUTIL
|
||||
#ifdef HAVE_OSK
|
||||
switch (action)
|
||||
{
|
||||
case RGUI_ACTION_OK:
|
||||
@ -2157,7 +2157,7 @@ int rmenu_iterate(void *data, unsigned action)
|
||||
rgui->need_refresh = false;
|
||||
}
|
||||
|
||||
#ifdef HAVE_OSKUTIL
|
||||
#ifdef HAVE_OSK
|
||||
if (rgui->osk_init != NULL)
|
||||
{
|
||||
if (rgui->osk_init(rgui))
|
||||
@ -2241,7 +2241,7 @@ static void* rmenu_init(void)
|
||||
|
||||
rgui_init_textures(rgui);
|
||||
|
||||
#ifdef HAVE_OSKUTIL
|
||||
#ifdef HAVE_OSK
|
||||
oskutil_params *osk = &rgui->oskutil_handle;
|
||||
oskutil_init(osk, 0);
|
||||
#endif
|
||||
|
@ -141,9 +141,6 @@ static void callback_sysutil_exit(uint64_t status, uint64_t param, void *userdat
|
||||
(void)status;
|
||||
|
||||
#ifndef IS_SALAMANDER
|
||||
#ifdef HAVE_OSKUTIL
|
||||
oskutil_params *osk = &rgui->oskutil_handle;
|
||||
#endif
|
||||
gl_t *gl = driver.video_data;
|
||||
|
||||
switch (status)
|
||||
@ -152,34 +149,12 @@ static void callback_sysutil_exit(uint64_t status, uint64_t param, void *userdat
|
||||
gl->quitting = true;
|
||||
g_extern.lifecycle_state &= ~((1ULL << MODE_MENU) | (1ULL << MODE_GAME));
|
||||
break;
|
||||
#ifdef HAVE_OSKUTIL
|
||||
#ifdef HAVE_OSK
|
||||
case CELL_SYSUTIL_OSKDIALOG_LOADED:
|
||||
break;
|
||||
case CELL_SYSUTIL_OSKDIALOG_INPUT_CANCELED:
|
||||
RARCH_LOG("CELL_SYSUTIL_OSKDIALOG_INPUT_CANCELED.\n");
|
||||
pOskAbort(); //fall-through
|
||||
case CELL_SYSUTIL_OSKDIALOG_FINISHED:
|
||||
if (status == CELL_SYSUTIL_OSKDIALOG_FINISHED)
|
||||
RARCH_LOG("CELL_SYSUTIL_OSKDIALOG_FINISHED.\n");
|
||||
|
||||
pOskUnloadAsync(&osk->outputInfo);
|
||||
|
||||
if (osk->outputInfo.result == CELL_OSKDIALOG_INPUT_FIELD_RESULT_OK)
|
||||
{
|
||||
RARCH_LOG("Setting MODE_OSK_ENTRY_SUCCESS.\n");
|
||||
g_extern.lifecycle_state |= (1ULL << MODE_OSK_ENTRY_SUCCESS);
|
||||
}
|
||||
else
|
||||
{
|
||||
RARCH_LOG("Setting MODE_OSK_ENTRY_FAIL.\n");
|
||||
g_extern.lifecycle_state |= (1ULL << MODE_OSK_ENTRY_FAIL);
|
||||
}
|
||||
|
||||
osk->flags &= ~OSK_IN_USE;
|
||||
break;
|
||||
case CELL_SYSUTIL_OSKDIALOG_UNLOADED:
|
||||
RARCH_LOG("CELL_SYSUTIL_OSKDIALOG_UNLOADED.\n");
|
||||
sys_memory_container_destroy(osk->containerid);
|
||||
oskutil_lifecycle(rgui->oskutil_handle, status);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
@ -244,31 +244,47 @@ static int16_t ps3_input_state(void *data, const struct retro_keybind **binds,
|
||||
ON-SCREEN KEYBOARD UTILITY
|
||||
============================================================ */
|
||||
|
||||
#ifdef HAVE_OSKUTIL
|
||||
#ifdef HAVE_OSK
|
||||
|
||||
#define OSK_IN_USE 1
|
||||
|
||||
void oskutil_init(oskutil_params *params, unsigned containersize)
|
||||
void *oskutil_init(unsigned containersize)
|
||||
{
|
||||
ps3_osk_t *params = (ps3_osk_t*)calloc(1, sizeof(*params));
|
||||
|
||||
if (!params)
|
||||
return NULL;
|
||||
|
||||
params->flags = 0;
|
||||
if (containersize)
|
||||
params->osk_memorycontainer = containersize;
|
||||
else
|
||||
params->osk_memorycontainer = 1024*1024*2;
|
||||
|
||||
return params;
|
||||
}
|
||||
|
||||
static bool oskutil_enable_key_layout (void)
|
||||
void oskutil_free(void *data)
|
||||
{
|
||||
int ret = pOskSetKeyLayoutOption(CELL_OSKDIALOG_10KEY_PANEL | \
|
||||
CELL_OSKDIALOG_FULLKEY_PANEL);
|
||||
if (ret < 0)
|
||||
return (false);
|
||||
else
|
||||
return (true);
|
||||
ps3_osk_t *params = (ps3_osk_t*)data;
|
||||
|
||||
if (params)
|
||||
free(params);
|
||||
}
|
||||
|
||||
static void oskutil_create_activation_parameters(oskutil_params *params)
|
||||
static bool oskutil_enable_key_layout (void *data)
|
||||
{
|
||||
(void)data;
|
||||
|
||||
if (pOskSetKeyLayoutOption(CELL_OSKDIALOG_10KEY_PANEL | CELL_OSKDIALOG_FULLKEY_PANEL) < 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void oskutil_create_activation_parameters(void *data)
|
||||
{
|
||||
ps3_osk_t *params = (ps3_osk_t*)data;
|
||||
params->dialogParam.controlPoint.x = 0.0;
|
||||
params->dialogParam.controlPoint.y = 0.0;
|
||||
|
||||
@ -285,29 +301,31 @@ static void oskutil_create_activation_parameters(oskutil_params *params)
|
||||
params->dialogParam.osk_prohibit_flags = 0;
|
||||
}
|
||||
|
||||
void oskutil_write_message(oskutil_params *params, const wchar_t* msg)
|
||||
void oskutil_write_message(void *data, const void *data_msg)
|
||||
{
|
||||
ps3_osk_t *params = (ps3_osk_t*)data;
|
||||
const wchar_t *msg = (const wchar_t*)data_msg;
|
||||
params->inputFieldInfo.osk_inputfield_message = (uint16_t*)msg;
|
||||
}
|
||||
|
||||
void oskutil_write_initial_message(oskutil_params *params, const wchar_t* msg)
|
||||
void oskutil_write_initial_message(void *data, const void *data_msg)
|
||||
{
|
||||
ps3_osk_t *params = (ps3_osk_t*)data;
|
||||
const wchar_t *msg = (const wchar_t*)data_msg;
|
||||
params->inputFieldInfo.osk_inputfield_starttext = (uint16_t*)msg;
|
||||
}
|
||||
|
||||
bool oskutil_start(oskutil_params *params)
|
||||
bool oskutil_start(void *data)
|
||||
{
|
||||
ps3_osk_t *params = (ps3_osk_t*)data;
|
||||
|
||||
if (params->flags & OSK_IN_USE)
|
||||
{
|
||||
RARCH_WARN("OSK util already initialized and in use\n");
|
||||
return true;
|
||||
}
|
||||
|
||||
int ret = 0;
|
||||
|
||||
ret = sys_memory_container_create(¶ms->containerid, params->osk_memorycontainer);
|
||||
|
||||
if (ret < 0)
|
||||
if (sys_memory_container_create(¶ms->containerid, params->osk_memorycontainer) < 0)
|
||||
goto do_deinit;
|
||||
|
||||
params->outputInfo.osk_callback_return_param = CELL_OSKDIALOG_INPUT_FIELD_RESULT_OK;
|
||||
@ -320,12 +338,10 @@ bool oskutil_start(oskutil_params *params)
|
||||
|
||||
oskutil_create_activation_parameters(params);
|
||||
|
||||
if (!oskutil_enable_key_layout())
|
||||
if (!oskutil_enable_key_layout(params))
|
||||
return (false);
|
||||
|
||||
ret = pOskLoadAsync(params->containerid, ¶ms->dialogParam, ¶ms->inputFieldInfo);
|
||||
|
||||
if (ret < 0)
|
||||
if (pOskLoadAsync(params->containerid, ¶ms->dialogParam, ¶ms->inputFieldInfo) < 0)
|
||||
goto do_deinit;
|
||||
|
||||
params->flags |= OSK_IN_USE;
|
||||
@ -336,6 +352,43 @@ do_deinit:
|
||||
RARCH_ERR("Could not properly initialize OSK util.\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
void oskutil_lifecycle(void *data, uint64_t status)
|
||||
{
|
||||
ps3_osk_t *osk = (ps3_osk_t*)data;
|
||||
|
||||
switch (status)
|
||||
{
|
||||
case CELL_SYSUTIL_OSKDIALOG_LOADED:
|
||||
break;
|
||||
case CELL_SYSUTIL_OSKDIALOG_INPUT_CANCELED:
|
||||
RARCH_LOG("CELL_SYSUTIL_OSKDIALOG_INPUT_CANCELED.\n");
|
||||
pOskAbort(); //fall-through
|
||||
case CELL_SYSUTIL_OSKDIALOG_FINISHED:
|
||||
if (status == CELL_SYSUTIL_OSKDIALOG_FINISHED)
|
||||
RARCH_LOG("CELL_SYSUTIL_OSKDIALOG_FINISHED.\n");
|
||||
|
||||
pOskUnloadAsync(&osk->outputInfo);
|
||||
|
||||
if (osk->outputInfo.result == CELL_OSKDIALOG_INPUT_FIELD_RESULT_OK)
|
||||
{
|
||||
RARCH_LOG("Setting MODE_OSK_ENTRY_SUCCESS.\n");
|
||||
g_extern.lifecycle_state |= (1ULL << MODE_OSK_ENTRY_SUCCESS);
|
||||
}
|
||||
else
|
||||
{
|
||||
RARCH_LOG("Setting MODE_OSK_ENTRY_FAIL.\n");
|
||||
g_extern.lifecycle_state |= (1ULL << MODE_OSK_ENTRY_FAIL);
|
||||
}
|
||||
|
||||
osk->flags &= ~OSK_IN_USE;
|
||||
break;
|
||||
case CELL_SYSUTIL_OSKDIALOG_UNLOADED:
|
||||
RARCH_LOG("CELL_SYSUTIL_OSKDIALOG_UNLOADED.\n");
|
||||
sys_memory_container_destroy(osk->containerid);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*============================================================
|
||||
|
@ -29,9 +29,8 @@
|
||||
#define DEADZONE_LOW 55
|
||||
#define DEADZONE_HIGH 210
|
||||
|
||||
#ifdef HAVE_OSKUTIL
|
||||
|
||||
typedef struct
|
||||
#ifdef HAVE_OSK
|
||||
typedef struct ps3_osk
|
||||
{
|
||||
unsigned int osk_memorycontainer;
|
||||
wchar_t init_message[CELL_OSKDIALOG_STRING_SIZE + 1];
|
||||
@ -43,12 +42,12 @@ typedef struct
|
||||
CellOskDialogInputFieldInfo inputFieldInfo;
|
||||
CellOskDialogCallbackReturnParam outputInfo;
|
||||
CellOskDialogParam dialogParam;
|
||||
} oskutil_params;
|
||||
|
||||
void oskutil_write_message(oskutil_params *params, const wchar_t* msg);
|
||||
void oskutil_write_initial_message(oskutil_params *params, const wchar_t* msg);
|
||||
void oskutil_init(oskutil_params *params, unsigned containersize);
|
||||
} ps3_osk_t;
|
||||
|
||||
void oskutil_write_message(void *params, const void* msg);
|
||||
void oskutil_write_initial_message(void *params, const void* msg);
|
||||
void *oskutil_init(unsigned containersize);
|
||||
void oskutil_free(void *data);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -143,7 +143,7 @@ extern int audioAddData(uint32_t portNum, float *data, uint32_t frames, float vo
|
||||
OSK PROTOTYPES
|
||||
============================================================ */
|
||||
|
||||
#ifdef HAVE_OSKUTIL
|
||||
#ifdef HAVE_OSK
|
||||
|
||||
#ifdef __PSL1GHT__
|
||||
#include <sysutil/osk.h>
|
||||
|
Loading…
x
Reference in New Issue
Block a user