소스 검색

win-capture: Always allow conf. of game capture hotkey

Even if the hotkey is not enabled, always allow configuration of the
hotkey.  Fixes a bug where the hotkey configuration settings would not
save if the settings were changed.

Annoyingly this means that the hotkey will still be shown to the user,
possibly confusing the user as to whether they can use it, but for the
time being it's better than having their hotkey configuration removed
each time they change the mode.
jp9000 9 년 전
부모
커밋
06b42f4f27
1개의 변경된 파일11개의 추가작업 그리고 17개의 파일을 삭제
  1. 11 17
      plugins/win-capture/game-capture.c

+ 11 - 17
plugins/win-capture/game-capture.c

@@ -376,8 +376,9 @@ static inline bool capture_needs_reset(struct game_capture_config *cfg1,
 static bool hotkey_start(void *data, obs_hotkey_pair_id id,
 		obs_hotkey_t *hotkey, bool pressed)
 {
-	if (pressed) {
-		struct game_capture *gc = data;
+	struct game_capture *gc = data;
+
+	if (pressed && gc->config.mode == CAPTURE_MODE_HOTKEY) {
 		info("Activate hotkey pressed");
 		os_atomic_set_long(&gc->hotkey_window,
 				(long)GetForegroundWindow());
@@ -391,8 +392,9 @@ static bool hotkey_start(void *data, obs_hotkey_pair_id id,
 static bool hotkey_stop(void *data, obs_hotkey_pair_id id,
 		obs_hotkey_t *hotkey, bool pressed)
 {
-	if (pressed) {
-		struct game_capture *gc = data;
+	struct game_capture *gc = data;
+
+	if (pressed && gc->config.mode == CAPTURE_MODE_HOTKEY) {
 		info("Deactivate hotkey pressed");
 		os_atomic_set_bool(&gc->deactivate_hook, true);
 	}
@@ -424,19 +426,6 @@ static void game_capture_update(void *data, obs_data_t *settings)
 	gc->retry_interval = DEFAULT_RETRY_INTERVAL;
 	gc->wait_for_target_startup = false;
 
-	if (cfg.mode == CAPTURE_MODE_HOTKEY) {
-		if (!gc->hotkey_pair) {
-			gc->hotkey_pair = obs_hotkey_pair_register_source(
-					gc->source,
-					HOTKEY_START, TEXT_HOTKEY_START,
-					HOTKEY_STOP,  TEXT_HOTKEY_STOP,
-					hotkey_start, hotkey_stop, gc, gc);
-		}
-	} else if (gc->hotkey_pair) {
-		obs_hotkey_pair_unregister(gc->hotkey_pair);
-		gc->hotkey_pair = 0;
-	}
-
 	dstr_free(&gc->title);
 	dstr_free(&gc->class);
 	dstr_free(&gc->executable);
@@ -463,6 +452,11 @@ static void *game_capture_create(obs_data_t *settings, obs_source_t *source)
 	gc->source = source;
 	gc->initial_config = true;
 	gc->retry_interval = DEFAULT_RETRY_INTERVAL;
+	gc->hotkey_pair = obs_hotkey_pair_register_source(
+			gc->source,
+			HOTKEY_START, TEXT_HOTKEY_START,
+			HOTKEY_STOP,  TEXT_HOTKEY_STOP,
+			hotkey_start, hotkey_stop, gc, gc);
 
 	game_capture_update(gc, settings);
 	return gc;