2021-01-30

FFplay disappears when loosing focus

デュアルディスプレイ環境で、片方にffplayで動画を再生しもう一方で作業しようとすると、ffplayがフォーカスを失ったときにウィンドウが消えるという問題に遭遇した。

この原因は、SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSSというヒントが設定されているためで、これを無効にすればよい。

以下のようにffplay.cに1行加えることで、問題を解決できた。

diff --git a/fftools/ffplay.c b/fftools/ffplay.c
index 9ff0425163..2e3d7a18cc 100644
--- a/fftools/ffplay.c
+++ b/fftools/ffplay.c
@@ -3755,6 +3755,7 @@ int main(int argc, char **argv)
             flags |= SDL_WINDOW_RESIZABLE;
         window = SDL_CreateWindow(program_name, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, default_width, default_height, flags);
         SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear");
+        SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, "0");
         if (window) {
             renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
             if (!renderer) {