mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 04:20:28 +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;
|
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;
|
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;
|
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;
|
return p_dispwidget->last_video_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1980,7 +1980,7 @@ void gfx_widgets_frame(void *data)
|
|||||||
const gfx_widget_t* widget = widgets[i];
|
const gfx_widget_t* widget = widgets[i];
|
||||||
|
|
||||||
if (widget->frame)
|
if (widget->frame)
|
||||||
widget->frame(data);
|
widget->frame(data, p_dispwidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Draw all messages */
|
/* Draw all messages */
|
||||||
@ -2258,7 +2258,8 @@ static void gfx_widgets_layout(
|
|||||||
const gfx_widget_t* widget = widgets[i];
|
const gfx_widget_t* widget = widgets[i];
|
||||||
|
|
||||||
if (widget->layout)
|
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
|
/* called when the window resolution changes
|
||||||
* -> (re)layout the widget here */
|
* -> (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
|
/* called every frame on the main thread
|
||||||
* -> update the widget logic here */
|
* -> update the widget logic here */
|
||||||
@ -85,7 +86,7 @@ struct gfx_widget
|
|||||||
/* called every frame
|
/* called every frame
|
||||||
* (on the video thread if threaded video is on)
|
* (on the video thread if threaded video is on)
|
||||||
* -> draw the widget here */
|
* -> draw the widget here */
|
||||||
void (*frame)(void* data);
|
void (*frame)(void* data, void *userdata);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* This structure holds all objects + metadata
|
/* 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);
|
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! */
|
/* Warning: not thread safe! */
|
||||||
size_t gfx_widgets_get_msg_queue_size(void);
|
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);
|
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_state_t* state =
|
||||||
gfx_widget_generic_message_get_ptr();
|
gfx_widget_generic_message_get_ptr();
|
||||||
@ -92,7 +92,7 @@ static void gfx_widget_generic_message_frame(void* data)
|
|||||||
void* userdata = video_info->userdata;
|
void* userdata = video_info->userdata;
|
||||||
unsigned video_width = video_info->width;
|
unsigned video_width = video_info->width;
|
||||||
unsigned video_height = video_info->height;
|
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));
|
unsigned text_color = COLOR_TEXT_ALPHA(0xffffffff, (unsigned)(state->alpha*255.0f));
|
||||||
gfx_widget_font_data_t* font_regular = gfx_widgets_get_font_regular();
|
gfx_widget_font_data_t* font_regular = gfx_widgets_get_font_regular();
|
||||||
size_t msg_queue_size = gfx_widgets_get_msg_queue_size();
|
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;
|
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)
|
if (state->alpha > 0.0f)
|
||||||
{
|
{
|
||||||
@ -96,7 +97,7 @@ static void gfx_widget_libretro_message_frame(void *data)
|
|||||||
void* userdata = video_info->userdata;
|
void* userdata = video_info->userdata;
|
||||||
unsigned video_width = video_info->width;
|
unsigned video_width = video_info->width;
|
||||||
unsigned video_height = video_info->height;
|
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();
|
float* backdrop_orign = gfx_widgets_get_backdrop_orig();
|
||||||
unsigned text_color = COLOR_TEXT_ALPHA(0xffffffff, (unsigned)(state->alpha*255.0f));
|
unsigned text_color = COLOR_TEXT_ALPHA(0xffffffff, (unsigned)(state->alpha*255.0f));
|
||||||
gfx_widget_font_data_t* font_regular = gfx_widgets_get_font_regular();
|
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);
|
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;
|
video_frame_info_t *video_info = (video_frame_info_t*)data;
|
||||||
void *userdata = video_info->userdata;
|
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;
|
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();
|
gfx_widget_volume_state_t* state = gfx_widget_volume_get_ptr();
|
||||||
|
|
||||||
if (state->alpha > 0.0f)
|
if (state->alpha > 0.0f)
|
||||||
{
|
{
|
||||||
video_frame_info_t *video_info = (video_frame_info_t*)data;
|
|
||||||
|
|
||||||
char msg[255];
|
char msg[255];
|
||||||
char percentage_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();
|
gfx_widget_font_data_t* font_regular = gfx_widgets_get_font_regular();
|
||||||
|
|
||||||
void *userdata = video_info->userdata;
|
void *userdata = video_info->userdata;
|
||||||
@ -305,10 +303,12 @@ void gfx_widget_volume_update_and_show(float new_volume, bool mute)
|
|||||||
gfx_timer_start(&state->timer, &entry);
|
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();
|
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();
|
gfx_widget_font_data_t* font_regular = gfx_widgets_get_font_regular();
|
||||||
|
|
||||||
state->widget_height = font_regular->line_height * 4;
|
state->widget_height = font_regular->line_height * 4;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user