android: use common rend_thread() instead of a specific one
fixes the swap pending issue (double swap) on android
This commit is contained in:
parent
2c91ca96fc
commit
506756ea37
|
@ -78,8 +78,9 @@ u32 FrameCount=1;
|
|||
|
||||
Renderer* renderer;
|
||||
static Renderer* fallback_renderer;
|
||||
bool renderer_enabled = true; // Signals the renderer thread to exit
|
||||
bool renderer_changed = false; // Signals the renderer thread to switch renderer
|
||||
volatile bool renderer_enabled = true; // Signals the renderer thread to exit
|
||||
volatile bool renderer_changed = false; // Signals the renderer thread to switch renderer
|
||||
volatile bool renderer_reinit_requested = false; // Signals the renderer thread to reinit the renderer
|
||||
|
||||
#if !defined(TARGET_NO_THREADS)
|
||||
cResetEvent rs, re;
|
||||
|
@ -398,6 +399,8 @@ void rend_term_renderer()
|
|||
|
||||
void* rend_thread(void* p)
|
||||
{
|
||||
renderer_enabled = true;
|
||||
|
||||
rend_init_renderer();
|
||||
|
||||
//we don't know if this is true, so let's not speculate here
|
||||
|
@ -416,10 +419,16 @@ void* rend_thread(void* p)
|
|||
if (renderer_changed)
|
||||
{
|
||||
renderer_changed = false;
|
||||
renderer_reinit_requested = false;
|
||||
rend_term_renderer();
|
||||
rend_create_renderer();
|
||||
rend_init_renderer();
|
||||
}
|
||||
else if (renderer_reinit_requested)
|
||||
{
|
||||
renderer_reinit_requested = false;
|
||||
rend_init_renderer();
|
||||
}
|
||||
}
|
||||
|
||||
rend_term_renderer();
|
||||
|
|
|
@ -14,6 +14,7 @@ void rend_end_render();
|
|||
void rend_cancel_emu_wait();
|
||||
bool rend_single_frame();
|
||||
void rend_swap_frame();
|
||||
void *rend_thread(void *);
|
||||
|
||||
void rend_set_fb_scale(float x,float y);
|
||||
void rend_resize(int width, int height);
|
||||
|
@ -52,8 +53,9 @@ struct Renderer
|
|||
};
|
||||
|
||||
extern Renderer* renderer;
|
||||
extern bool renderer_enabled; // Signals the renderer thread to exit
|
||||
extern bool renderer_changed; // Signals the renderer thread to switch renderer
|
||||
extern volatile bool renderer_enabled; // Signals the renderer thread to exit
|
||||
extern volatile bool renderer_changed; // Signals the renderer thread to switch renderer
|
||||
extern volatile bool renderer_reinit_requested; // Signals the renderer thread to reinit the renderer
|
||||
|
||||
Renderer* rend_GLES2();
|
||||
#if !defined(GLES) && HOST_OS != OS_DARWIN
|
||||
|
|
|
@ -62,7 +62,6 @@ extern u32 mo_buttons;
|
|||
extern f32 mo_x_delta;
|
||||
extern f32 mo_y_delta;
|
||||
extern f32 mo_wheel_delta;
|
||||
extern bool renderer_changed;
|
||||
|
||||
int screen_dpi = 96;
|
||||
|
||||
|
|
|
@ -401,36 +401,14 @@ JNIEXPORT jint JNICALL Java_com_reicast_emulator_emu_JNIdc_data(JNIEnv *env, job
|
|||
return 0;
|
||||
}
|
||||
|
||||
extern void gl_swap();
|
||||
extern void egl_stealcntx();
|
||||
volatile static bool render_running;
|
||||
volatile static bool render_reinit;
|
||||
|
||||
void *render_thread_func(void *)
|
||||
static void *render_thread_func(void *)
|
||||
{
|
||||
render_running = true;
|
||||
rend_thread(NULL);
|
||||
|
||||
rend_init_renderer();
|
||||
|
||||
while (render_running) {
|
||||
if (render_reinit)
|
||||
{
|
||||
render_reinit = false;
|
||||
rend_init_renderer();
|
||||
}
|
||||
else
|
||||
if (!egl_makecurrent())
|
||||
break;;
|
||||
|
||||
bool ret = rend_single_frame();
|
||||
if (ret)
|
||||
gl_swap();
|
||||
}
|
||||
egl_makecurrent();
|
||||
rend_term_renderer();
|
||||
ANativeWindow_release(g_window);
|
||||
ANativeWindow_release(g_window);
|
||||
g_window = NULL;
|
||||
render_running = false;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -443,11 +421,11 @@ JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_rendinitNative(JNIEnv
|
|||
{
|
||||
if (surface == NULL)
|
||||
{
|
||||
render_running = false;
|
||||
renderer_enabled = false;
|
||||
render_thread.WaitToEnd();
|
||||
}
|
||||
else
|
||||
render_reinit = true;
|
||||
renderer_reinit_requested = true;
|
||||
}
|
||||
else if (surface != NULL)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue