Browse Source

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 năm trước cách đây
mục cha
commit
06b42f4f27
1 tập tin đã thay đổi với 11 bổ sung17 xóa
  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;