Update libretro camera API.

Need initialized/deinitialized callbacks to properly
handle driver reinit.
This commit is contained in:
Themaister 2013-11-16 17:53:02 +01:00
parent 5c89e9106a
commit 271939875a
2 changed files with 21 additions and 1 deletions

View File

@ -613,6 +613,8 @@ void global_uninit_drivers(void)
#ifdef HAVE_CAMERA
if (driver.camera && driver.camera_data)
{
if (g_extern.system.camera_callback.deinitialized)
g_extern.system.camera_callback.deinitialized();
driver.camera->free(driver.camera_data);
driver.camera_data = NULL;
}
@ -647,6 +649,9 @@ void init_camera(void)
RARCH_ERR("Failed to initialize camera driver. Will continue without camera.\n");
g_extern.camera_active = false;
}
if (g_extern.system.camera_callback.initialized)
g_extern.system.camera_callback.initialized();
}
#endif
@ -714,8 +719,12 @@ void init_drivers(void)
void uninit_camera(void)
{
if (driver.camera_data && driver.camera)
{
if (g_extern.system.camera_callback.deinitialized)
g_extern.system.camera_callback.deinitialized();
driver.camera->free(driver.camera_data);
}
}
#endif
#ifdef HAVE_OSK

View File

@ -586,6 +586,9 @@ enum retro_camera_buffer
typedef bool (*retro_camera_start_t)(void);
// Stops the camera driver. Can only be called in retro_run().
typedef void (*retro_camera_stop_t)(void);
// Callback which signals when the camera driver is initialized and/or deinitialized.
// retro_camera_start_t can be called in initialized callback.
typedef void (*retro_camera_lifetime_status_t)(void);
// A callback for raw framebuffer data. buffer points to an XRGB8888 buffer.
// Width, height and pitch are similar to retro_video_refresh_t.
// First pixel is top-left origin.
@ -614,6 +617,14 @@ struct retro_camera_callback
retro_camera_frame_raw_framebuffer_t frame_raw_framebuffer; // Set by libretro core if raw framebuffer callbacks will be used.
retro_camera_frame_opengl_texture_t frame_opengl_texture; // Set by libretro core if OpenGL texture callbacks will be used.
// Set by libretro core. Called after camera driver is initialized and ready to be started.
// Can be NULL, in which this callback is not called.
retro_camera_lifetime_status_t initialized;
// Set by libretro core. Called right before camera driver is deinitialized.
// Can be NULL, in which this callback is not called.
retro_camera_lifetime_status_t deinitialized;
};
enum retro_rumble_effect