Refactor AI Service code

This commit is contained in:
twinaphex 2020-06-11 03:27:01 +02:00
parent 30bfca0d71
commit a68b942d1d
3 changed files with 31 additions and 52 deletions

View File

@ -2334,25 +2334,11 @@ bool gfx_widgets_set_fps_text(
}
#ifdef HAVE_TRANSLATE
int gfx_widgets_ai_service_overlay_get_state(void)
{
dispgfx_widget_t *p_dispwidget = (dispgfx_widget_t*)dispwidget_get_ptr();
return p_dispwidget->ai_service_overlay_state;
}
bool gfx_widgets_ai_service_overlay_set_state(int state)
{
dispgfx_widget_t *p_dispwidget = (dispgfx_widget_t*)dispwidget_get_ptr();
p_dispwidget->ai_service_overlay_state = state;
return true;
}
bool gfx_widgets_ai_service_overlay_load(
char* buffer, unsigned buffer_len,
enum image_type_enum image_type)
dispgfx_widget_t *p_dispwidget,
char* buffer, unsigned buffer_len,
enum image_type_enum image_type)
{
dispgfx_widget_t *p_dispwidget = (dispgfx_widget_t*)dispwidget_get_ptr();
if (p_dispwidget->ai_service_overlay_state == 0)
{
bool res = gfx_display_reset_textures_list_buffer(
@ -2368,10 +2354,8 @@ bool gfx_widgets_ai_service_overlay_load(
return true;
}
void gfx_widgets_ai_service_overlay_unload(void)
void gfx_widgets_ai_service_overlay_unload(dispgfx_widget_t *p_dispwidget)
{
dispgfx_widget_t *p_dispwidget = (dispgfx_widget_t*)dispwidget_get_ptr();
if (p_dispwidget->ai_service_overlay_state == 1)
{
video_driver_texture_unload(&p_dispwidget->ai_service_overlay_texture);

View File

@ -385,15 +385,12 @@ void gfx_widget_screenshot_taken(void *data,
/* AI Service functions */
#ifdef HAVE_TRANSLATE
int gfx_widgets_ai_service_overlay_get_state(void);
bool gfx_widgets_ai_service_overlay_set_state(int state);
bool gfx_widgets_ai_service_overlay_load(
char* buffer, unsigned buffer_len,
enum image_type_enum image_type);
dispgfx_widget_t *p_dispwidget,
char* buffer, unsigned buffer_len,
enum image_type_enum image_type);
void gfx_widgets_ai_service_overlay_unload(void);
void gfx_widgets_ai_service_overlay_unload(dispgfx_widget_t *p_dispwidget);
#endif
void gfx_widgets_start_load_content_animation(

View File

@ -11810,13 +11810,11 @@ static void handle_translation_cb(
bool gfx_widgets_paused = p_rarch->gfx_widgets_paused;
#ifdef GFX_MENU_WIDGETS
if (gfx_widgets_ai_service_overlay_get_state() != 0
/* When auto mode is on, we turn off the overlay
* once we have the result for the next call.*/
if (p_rarch->dispwidget_st.ai_service_overlay_state != 0
&& p_rarch->ai_service_auto == 2)
{
/* When auto mode is on, we turn off the overlay
* once we have the result for the next call.*/
gfx_widgets_ai_service_overlay_unload();
}
gfx_widgets_ai_service_overlay_unload(&p_rarch->dispwidget_st);
#endif
#ifdef DEBUG
@ -11946,7 +11944,7 @@ static void handle_translation_cb(
if (gfx_widgets_paused)
{
/* In this case we have to unpause and then repause for a frame */
gfx_widgets_ai_service_overlay_set_state(2);
p_rarch->dispwidget_st.ai_service_overlay_state = 2;
command_event(CMD_EVENT_UNPAUSE, NULL);
}
#endif
@ -11995,8 +11993,9 @@ static void handle_translation_cb(
}
ai_res = gfx_widgets_ai_service_overlay_load(
raw_image_file_data, (unsigned) new_image_size,
image_type);
&p_rarch->dispwidget_st,
raw_image_file_data, (unsigned) new_image_size,
image_type);
if (!ai_res)
{
@ -12011,7 +12010,8 @@ static void handle_translation_cb(
{
/* In this case we have to unpause and then repause for a frame */
#ifdef HAVE_TRANSLATE
gfx_widgets_ai_service_overlay_set_state(2);/* Unpausing state */
/* Unpausing state */
p_rarch->dispwidget_st.ai_service_overlay_state = 2;
#endif
command_event(CMD_EVENT_UNPAUSE, NULL);
}
@ -12528,11 +12528,11 @@ static bool run_translation_service(struct rarch_state *p_rarch,
video_driver_pix_fmt = p_rarch->video_driver_pix_fmt;
#ifdef HAVE_GFX_WIDGETS
if ( (gfx_widgets_ai_service_overlay_get_state() != 0)
/* For the case when ai service pause is disabled. */
if ( (p_rarch->dispwidget_st.ai_service_overlay_state != 0)
&& (p_rarch->ai_service_auto == 1))
{
/* For the case when ai service pause is disabled. */
gfx_widgets_ai_service_overlay_unload();
gfx_widgets_ai_service_overlay_unload(&p_rarch->dispwidget_st);
goto finish;
}
#endif
@ -14032,8 +14032,8 @@ static void retroarch_pause_checks(struct rarch_state *p_rarch)
}
#if defined(HAVE_TRANSLATE) && defined(HAVE_GFX_WIDGETS)
if (gfx_widgets_ai_service_overlay_get_state() == 1)
gfx_widgets_ai_service_overlay_unload();
if (p_rarch->dispwidget_st.ai_service_overlay_state == 1)
gfx_widgets_ai_service_overlay_unload(&p_rarch->dispwidget_st);
#endif
}
@ -14128,13 +14128,11 @@ bool command_event(enum event_command cmd, void *data)
retroarch_overlay_deinit(p_rarch);
#endif
#if defined(HAVE_TRANSLATE) && defined(HAVE_GFX_WIDGETS)
if (gfx_widgets_ai_service_overlay_get_state() != 0)
{
/* Because the overlay is a display widget,
* it's going to be written
* over the menu, so we unset it here. */
gfx_widgets_ai_service_overlay_unload();
}
/* Because the overlay is a display widget,
* it's going to be written
* over the menu, so we unset it here. */
if (p_rarch->dispwidget_st.ai_service_overlay_state != 0)
gfx_widgets_ai_service_overlay_unload(&p_rarch->dispwidget_st);
#endif
break;
case CMD_EVENT_OVERLAY_INIT:
@ -14206,7 +14204,7 @@ bool command_event(enum event_command cmd, void *data)
* toggle button, so turn it off now. */
p_rarch->ai_service_auto = 0;
#ifdef HAVE_MENU_WIDGETS
gfx_widgets_ai_service_overlay_unload();
gfx_widgets_ai_service_overlay_unload(&p_rarch->dispwidget_st);
#endif
}
else
@ -36207,10 +36205,10 @@ static enum runloop_state runloop_check_state(
#endif
#if defined(HAVE_TRANSLATE) && defined(HAVE_GFX_WIDGETS)
if (gfx_widgets_ai_service_overlay_get_state() == 3)
if (p_rarch->dispwidget_st.ai_service_overlay_state == 3)
{
command_event(CMD_EVENT_PAUSE, NULL);
gfx_widgets_ai_service_overlay_set_state(1);
p_rarch->dispwidget_st.ai_service_overlay_state = 1;
}
#endif