mirror of
https://github.com/libretro/RetroArch
synced 2025-03-25 16:44:01 +00:00
Pass state around to widget interface
This commit is contained in:
parent
77f5433f22
commit
54372f2524
@ -392,21 +392,21 @@ unsigned gfx_widgets_get_height(void)
|
||||
return p_dispwidget->simple_widget_height;
|
||||
}
|
||||
|
||||
unsigned gfx_widgets_get_generic_message_height(void)
|
||||
unsigned gfx_widgets_get_generic_message_height(void *data)
|
||||
{
|
||||
dispgfx_widget_t *p_dispwidget = dispwidget_get_ptr();
|
||||
dispgfx_widget_t *p_dispwidget = (dispgfx_widget_t*)data;
|
||||
return p_dispwidget->generic_message_height;
|
||||
}
|
||||
|
||||
unsigned gfx_widgets_get_last_video_width(void)
|
||||
unsigned gfx_widgets_get_last_video_width(void *data)
|
||||
{
|
||||
dispgfx_widget_t *p_dispwidget = dispwidget_get_ptr();
|
||||
dispgfx_widget_t *p_dispwidget = (dispgfx_widget_t*)data;
|
||||
return p_dispwidget->last_video_width;
|
||||
}
|
||||
|
||||
unsigned gfx_widgets_get_last_video_height(void)
|
||||
unsigned gfx_widgets_get_last_video_height(void *data)
|
||||
{
|
||||
dispgfx_widget_t *p_dispwidget = dispwidget_get_ptr();
|
||||
dispgfx_widget_t *p_dispwidget = (dispgfx_widget_t*)data;
|
||||
return p_dispwidget->last_video_height;
|
||||
}
|
||||
|
||||
@ -1980,7 +1980,7 @@ void gfx_widgets_frame(void *data)
|
||||
const gfx_widget_t* widget = widgets[i];
|
||||
|
||||
if (widget->frame)
|
||||
widget->frame(data);
|
||||
widget->frame(data, p_dispwidget);
|
||||
}
|
||||
|
||||
/* Draw all messages */
|
||||
@ -2258,7 +2258,8 @@ static void gfx_widgets_layout(
|
||||
const gfx_widget_t* widget = widgets[i];
|
||||
|
||||
if (widget->layout)
|
||||
widget->layout(is_threaded, dir_assets, font_path);
|
||||
widget->layout(p_dispwidget,
|
||||
is_threaded, dir_assets, font_path);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -73,7 +73,8 @@ struct gfx_widget
|
||||
|
||||
/* called when the window resolution changes
|
||||
* -> (re)layout the widget here */
|
||||
void (*layout)(bool is_threaded, const char *dir_assets, char *font_path);
|
||||
void (*layout)(void *data,
|
||||
bool is_threaded, const char *dir_assets, char *font_path);
|
||||
|
||||
/* called every frame on the main thread
|
||||
* -> update the widget logic here */
|
||||
@ -85,7 +86,7 @@ struct gfx_widget
|
||||
/* called every frame
|
||||
* (on the video thread if threaded video is on)
|
||||
* -> draw the widget here */
|
||||
void (*frame)(void* data);
|
||||
void (*frame)(void* data, void *userdata);
|
||||
};
|
||||
|
||||
/* This structure holds all objects + metadata
|
||||
@ -118,11 +119,11 @@ gfx_widget_font_data_t* gfx_widgets_get_font_msg_queue(void);
|
||||
|
||||
float* gfx_widgets_get_backdrop_orig(void);
|
||||
|
||||
unsigned gfx_widgets_get_last_video_width(void);
|
||||
unsigned gfx_widgets_get_last_video_width(void *data);
|
||||
|
||||
unsigned gfx_widgets_get_last_video_height(void);
|
||||
unsigned gfx_widgets_get_last_video_height(void *data);
|
||||
|
||||
unsigned gfx_widgets_get_generic_message_height(void);
|
||||
unsigned gfx_widgets_get_generic_message_height(void *data);
|
||||
|
||||
/* Warning: not thread safe! */
|
||||
size_t gfx_widgets_get_msg_queue_size(void);
|
||||
|
@ -81,7 +81,7 @@ void gfx_widget_set_message(char *msg)
|
||||
gfx_timer_start(&state->timer, &timer);
|
||||
}
|
||||
|
||||
static void gfx_widget_generic_message_frame(void* data)
|
||||
static void gfx_widget_generic_message_frame(void* data, void *user_data)
|
||||
{
|
||||
gfx_widget_generic_message_state_t* state =
|
||||
gfx_widget_generic_message_get_ptr();
|
||||
@ -92,7 +92,7 @@ static void gfx_widget_generic_message_frame(void* data)
|
||||
void* userdata = video_info->userdata;
|
||||
unsigned video_width = video_info->width;
|
||||
unsigned video_height = video_info->height;
|
||||
unsigned height = gfx_widgets_get_generic_message_height();
|
||||
unsigned height = gfx_widgets_get_generic_message_height(user_data);
|
||||
unsigned text_color = COLOR_TEXT_ALPHA(0xffffffff, (unsigned)(state->alpha*255.0f));
|
||||
gfx_widget_font_data_t* font_regular = gfx_widgets_get_font_regular();
|
||||
size_t msg_queue_size = gfx_widgets_get_msg_queue_size();
|
||||
|
@ -86,9 +86,10 @@ void gfx_widget_set_libretro_message(const char *msg, unsigned duration)
|
||||
state->width = font_driver_get_message_width(font_regular->font, msg, (unsigned)strlen(msg), 1) + gfx_widgets_get_padding() * 2;
|
||||
}
|
||||
|
||||
static void gfx_widget_libretro_message_frame(void *data)
|
||||
static void gfx_widget_libretro_message_frame(void *data, void *user_data)
|
||||
{
|
||||
gfx_widget_libretro_message_state_t* state = gfx_widget_libretro_message_get_state();
|
||||
gfx_widget_libretro_message_state_t* state =
|
||||
gfx_widget_libretro_message_get_state();
|
||||
|
||||
if (state->alpha > 0.0f)
|
||||
{
|
||||
@ -96,7 +97,7 @@ static void gfx_widget_libretro_message_frame(void *data)
|
||||
void* userdata = video_info->userdata;
|
||||
unsigned video_width = video_info->width;
|
||||
unsigned video_height = video_info->height;
|
||||
unsigned height = gfx_widgets_get_generic_message_height();
|
||||
unsigned height = gfx_widgets_get_generic_message_height(user_data);
|
||||
float* backdrop_orign = gfx_widgets_get_backdrop_orig();
|
||||
unsigned text_color = COLOR_TEXT_ALPHA(0xffffffff, (unsigned)(state->alpha*255.0f));
|
||||
gfx_widget_font_data_t* font_regular = gfx_widgets_get_font_regular();
|
||||
|
@ -143,7 +143,7 @@ static void gfx_widget_screenshot_free(void)
|
||||
gfx_widget_screenshot_dispose(NULL);
|
||||
}
|
||||
|
||||
static void gfx_widget_screenshot_frame(void* data)
|
||||
static void gfx_widget_screenshot_frame(void* data, void *user_data)
|
||||
{
|
||||
video_frame_info_t *video_info = (video_frame_info_t*)data;
|
||||
void *userdata = video_info->userdata;
|
||||
|
@ -91,17 +91,15 @@ gfx_widget_volume_state_t* gfx_widget_volume_get_ptr(void)
|
||||
return &p_w_volume_st;
|
||||
}
|
||||
|
||||
static void gfx_widget_volume_frame(void* data)
|
||||
static void gfx_widget_volume_frame(void* data, void *user_data)
|
||||
{
|
||||
gfx_widget_volume_state_t* state = gfx_widget_volume_get_ptr();
|
||||
|
||||
if (state->alpha > 0.0f)
|
||||
{
|
||||
video_frame_info_t *video_info = (video_frame_info_t*)data;
|
||||
|
||||
char msg[255];
|
||||
char percentage_msg[255];
|
||||
|
||||
video_frame_info_t *video_info = (video_frame_info_t*)data;
|
||||
gfx_widget_font_data_t* font_regular = gfx_widgets_get_font_regular();
|
||||
|
||||
void *userdata = video_info->userdata;
|
||||
@ -305,14 +303,16 @@ void gfx_widget_volume_update_and_show(float new_volume, bool mute)
|
||||
gfx_timer_start(&state->timer, &entry);
|
||||
}
|
||||
|
||||
static void gfx_widget_volume_layout(bool is_threaded, const char *dir_assets, char *font_path)
|
||||
static void gfx_widget_volume_layout(
|
||||
void *data,
|
||||
bool is_threaded, const char *dir_assets, char *font_path)
|
||||
{
|
||||
gfx_widget_volume_state_t* state = gfx_widget_volume_get_ptr();
|
||||
unsigned last_video_width = gfx_widgets_get_last_video_width();
|
||||
unsigned last_video_width = gfx_widgets_get_last_video_width(data);
|
||||
gfx_widget_font_data_t* font_regular = gfx_widgets_get_font_regular();
|
||||
|
||||
state->widget_height = font_regular->line_height * 4;
|
||||
state->widget_width = state->widget_height * 4;
|
||||
state->widget_height = font_regular->line_height * 4;
|
||||
state->widget_width = state->widget_height * 4;
|
||||
|
||||
/* Volume widget cannot exceed screen width
|
||||
* > If it does, scale it down */
|
||||
|
Loading…
x
Reference in New Issue
Block a user