win-capture: Shut down game cap. when not showing

Prevents game capture from acting as a global source.  This fixes an
issue where a game capture in another scene could capture a window and
prevent a separate game capture in the current scene from being able to
capture that same window.
This commit is contained in:
jp9000
2016-05-12 19:36:33 -07:00
parent 9493095c25
commit 8681baeec3

View File

@@ -84,6 +84,7 @@ struct game_capture {
float fps_reset_time;
float retry_interval;
bool wait_for_target_startup : 1;
bool showing : 1;
bool active : 1;
bool capturing : 1;
bool activate_hook : 1;
@@ -1254,6 +1255,15 @@ static void game_capture_tick(void *data, float seconds)
{
struct game_capture *gc = data;
if (!obs_source_showing(gc->source)) {
if (gc->showing) {
if (gc->active)
stop_capture(gc);
gc->showing = false;
}
return;
}
if (gc->hook_stop && object_signalled(gc->hook_stop)) {
stop_capture(gc);
}
@@ -1294,11 +1304,6 @@ static void game_capture_tick(void *data, float seconds)
gc->retry_time += seconds;
if (!gc->active) {
if (!obs_source_showing(gc->source)) {
gc->retry_time = 0.0f;
return;
}
if (!gc->error_acquiring &&
gc->retry_time > gc->retry_interval) {
if (gc->config.capture_any_fullscreen ||
@@ -1332,6 +1337,9 @@ static void game_capture_tick(void *data, float seconds)
}
}
}
if (!gc->showing)
gc->showing = true;
}
static inline void game_capture_render_cursor(struct game_capture *gc)