Merge remote-tracking branch 'upstream/master' into remove_ppmd

This commit is contained in:
Timo Strunk 2014-09-12 22:43:46 +02:00
commit 57bb0a2d85
7 changed files with 69 additions and 27 deletions

View File

@ -33,7 +33,7 @@
*/
int read_zip_file(const char * archive_path, const char *relative_path, void **buf)
{
size_t bytes_read = -1;
ssize_t bytes_read = -1;
bool finished_reading = false;
unzFile *zipfile = (unzFile*)unzOpen( archive_path );
if ( ! zipfile )
@ -144,7 +144,7 @@ struct string_list *compressed_zip_file_list_new(const char *path,
ext_list = string_split(ext, "|");
size_t bytes_read = -1;
ssize_t bytes_read = -1;
bool finished_reading = false;
unzFile *zipfile = (unzFile*)unzOpen( path );

View File

@ -1544,3 +1544,19 @@ void uninit_video_input(void)
deinit_shader_dir();
compute_monitor_fps_statistics();
}
void *driver_video_resolve(const video_driver_t **drv)
{
#ifdef HAVE_THREADS
if (g_settings.video.threaded && !g_extern.system.hw_render_callback.context_type)
return rarch_threaded_video_resolve(drv);
else
#endif
{
if (drv)
*drv = driver.video;
return driver.video_data;
}
}

View File

@ -554,6 +554,9 @@ bool driver_set_sensor_state(unsigned port,
float driver_sensor_get_input(unsigned port, unsigned action);
/* Use this if you need the real video driver and driver data pointers */
void *driver_video_resolve(const video_driver_t **drv);
#ifdef HAVE_DYLIB
void rarch_deinit_filter(void);
void rarch_init_filter(enum retro_pixel_format);

View File

@ -49,7 +49,8 @@ const gl_font_renderer_t *font_driver;
static void blit_line(float x, float y, const char *message, bool green)
{
gl_t *gl = (gl_t*)driver.video_data;
gl_t *gl = (gl_t*)driver_video_resolve(NULL);
if (!driver.menu || !gl)
return;
@ -77,7 +78,8 @@ static void glui_render_background(void)
0.0f, 0.0f, 0.0f, 0.9f,
};
gl_t *gl = (gl_t*)driver.video_data;
gl_t *gl = (gl_t*)driver_video_resolve(NULL);
if (!gl)
return;
@ -103,7 +105,7 @@ static void glui_render_messagebox(const char *message)
static void glui_frame(void)
{
gl_t *gl = (gl_t*)driver.video_data;
gl_t *gl = (gl_t*)driver_video_resolve(NULL);
if (!driver.menu || !gl)
return;
@ -258,10 +260,19 @@ static void glui_init_core_info(void *data)
static void *glui_init(void)
{
menu_handle_t *menu = (menu_handle_t*)calloc(1, sizeof(*menu));
gl_t *gl = (gl_t*)driver.video_data;
menu_handle_t *menu;
const video_driver_t *video_driver = NULL;
gl_t *gl = (gl_t*)driver_video_resolve(&video_driver);
if (!menu || !gl)
if (video_driver != &video_gl || !gl)
{
RARCH_ERR("Cannot initialize GLUI menu driver: gl video driver is not active.\n");
return NULL;
}
menu = (menu_handle_t*)calloc(1, sizeof(*menu));
if (!menu)
return NULL;
glui_init_core_info(menu);
@ -300,7 +311,7 @@ static void glui_context_reset(void *data)
{
char mediapath[256], themepath[256], iconpath[256];
menu_handle_t *menu = (menu_handle_t*)data;
gl_t *gl = (gl_t*)driver.video_data;
gl_t *gl = (gl_t*)driver_video_resolve(NULL);
driver.gfx_use_rgba = true;

View File

@ -71,9 +71,9 @@ float active_item_factor;
float under_item_offset;
// Font variables
void *font;
const gl_font_renderer_t *font_driver;
char font_path[PATH_MAX];
static void *font;
static const gl_font_renderer_t *font_driver;
static char font_path[PATH_MAX];
static const GLfloat vertex[] = {
0, 0,
@ -116,11 +116,12 @@ struct lakka_texture_item
struct lakka_texture_item textures[TEXTURE_LAST];
static tween_t* tweens = NULL;
int numtweens = 0;
static int numtweens = 0;
static void lakka_responsive(void)
{
gl_t *gl = (gl_t*)driver.video_data;
gl_t *gl = (gl_t*)driver_video_resolve(NULL);
if (!gl)
return;
@ -352,7 +353,8 @@ static void lakka_draw_text(const char *str, float x,
if (alpha == 0)
return;
gl_t *gl = (gl_t*)driver.video_data;
gl_t *gl = (gl_t*)driver_video_resolve(NULL);
if (!gl)
return;
@ -383,7 +385,8 @@ void lakka_draw_background(void)
1.0f, 1.0f, 1.0f, global_alpha,
};
gl_t *gl = (gl_t*)driver.video_data;
gl_t *gl = (gl_t*)driver_video_resolve(NULL);
if (!gl)
return;
@ -416,7 +419,7 @@ void lakka_draw_icon(GLuint texture, float x, float y,
if (alpha == 0)
return;
gl_t *gl = (gl_t*)driver.video_data;
gl_t *gl = (gl_t*)driver_video_resolve(NULL);
if (!gl)
return;
@ -623,7 +626,7 @@ static void lakka_draw_categories(void)
static void lakka_frame(void)
{
gl_t *gl = (gl_t*)driver.video_data;
gl_t *gl = (gl_t*)driver_video_resolve(NULL);
menu_category_t *active_category = (menu_category_t*)
&categories[menu_active_category];
menu_item_t *active_item;
@ -664,7 +667,7 @@ static GLuint png_texture_load(const char * file_name)
texture_image_load(&ti, file_name);
/* Generate the OpenGL texture object */
GLuint texture;
GLuint texture = 0;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, ti.width, ti.height, 0,
@ -680,9 +683,7 @@ static GLuint png_texture_load(const char * file_name)
static void lakka_context_destroy(void *data)
{
int i, j, k;
gl_t *gl = (gl_t*)driver.video_data;
(void)gl;
(void)data;
for (i = 0; i < TEXTURE_LAST; i++)
glDeleteTextures(1, &textures[i].id);
@ -841,7 +842,7 @@ static void lakka_context_reset(void *data)
int i, j, k;
char mediapath[256], themepath[256], iconpath[256];
menu_handle_t *menu = (menu_handle_t*)data;
gl_t *gl = (gl_t*)driver.video_data;
gl_t *gl = (gl_t*)driver_video_resolve(NULL);
driver.gfx_use_rgba = true;
@ -1105,18 +1106,18 @@ static void *lakka_init(void)
{
int i;
menu_handle_t *menu;
gl_t *gl;
const video_driver_t *video_driver = NULL;
gl_t *gl = (gl_t*)driver_video_resolve(&video_driver);
if (driver.video != &video_gl)
if (video_driver != &video_gl || !gl)
{
RARCH_ERR("Cannot initialize Lakka menu driver: gl video driver is not active.\n");
return NULL;
}
menu = (menu_handle_t*)calloc(1, sizeof(*menu));
gl = (gl_t*)driver.video_data;
if (!menu || !gl)
if (!menu)
return NULL;
lakka_responsive();

View File

@ -26,5 +26,7 @@ bool rarch_threaded_video_init(
const input_driver_t **input, void **input_data,
const video_driver_t *driver, const video_info_t *info);
void *rarch_threaded_video_resolve(const video_driver_t **drv);
#endif

View File

@ -926,4 +926,13 @@ bool rarch_threaded_video_init(const video_driver_t **out_driver,
return thread_init(thr, info, input, input_data);
}
void *rarch_threaded_video_resolve(const video_driver_t **drv)
{
const thread_video_t *thr = (const thread_video_t*)driver.video_data;
if (drv)
*drv = thr->driver;
return thr->driver_data;
}