<div dir="ltr">The Qt option is handled by Qt, yes, but it only works when the video is embedded in the interface, which means you can't keep the controls on the primary monitor. (I assume that's because a non-embedded video window isn't handled by Qt anymore)<div><br></div><div>I was chatting with Alexandre off-list about this and came to a similar conclusion. So I agree this patch can be discarded as I wrote it, and I can resubmit with a different approach.</div><div><br></div><div>First, in modules/video_output/win32/window.c, I can use the id parameter to determine the name of the monitor. I guess that's why the parameter is there?</div><div><br></div><div>Then another patch would create a new setting with the monitor name and pass it into that id parameter from further up the call stack. I think we could go further up the call stack than vout_window_SetFullScreen(). When I look at the call stack, I see this:</div><div><br></div><div>    libwin32_window_plugin.dll!SetFullscreen(vout_window_t * wnd, const char * id) (c:\vlc\vlc\modules\video_output\win32\window.c:189)</div><div>    libvlccore.dll!vout_window_SetFullScreen(const char * id, vout_window_t * window) (c:\vlc\vlc\include\vlc_vout_window.h:479)<br>    libvlccore.dll!vout_ChangeFullscreen(vout_thread_t * vout, const char * id) (c:\vlc\vlc\src\video_output\video_output.c:390)<br>    libvlccore.dll!FullscreenCallback(vlc_object_t * p_this, const char * psz_cmd, vlc_value_t oldval, vlc_value_t newval, void * p_data) (c:\vlc\vlc\src\video_output\vout_intf.c:569)<br>    libvlccore.dll!TriggerCallback(vlc_object_t * obj, variable_t * var, const char * name, vlc_value_t prev) (c:\vlc\vlc\src\misc\variables.c:252)<br>    libvlccore.dll!var_SetChecked(vlc_object_t * p_this, const char * psz_name, int expected_type, vlc_value_t val) (c:\vlc\vlc\src\misc\variables.c:709)<br>    libvlccore.dll!vlc_player_vout_SetVar(vlc_player_t * player, const char * name, int type, vlc_value_t val) (c:\vlc\vlc\src\player\vout.c:161)<br>    libvlccore.dll!vlc_player_vout_SetFullscreen(vlc_player_t * player, _Bool enabled) (c:\vlc\vlc\src\player\vout.c:180)<br></div><div><br></div><div>At  vout_intf.c:569 (FullscreenCallback) is where it calls vout_ChangeFullscreen(p_vout, NULL); where id is NULL. So that is where I'm guessing it could be reading the setting and passing it as the id instead of NULL.</div><div><br></div><div>Qt has a way to get a list of display devices, and that's already how "qt-fullscreen-screennumber" is populated in the preferences window, but we can get the name instead of the number by using ->currentText().toUtf8() instead of ->currentData().toInt().</div><div><br></div><div>Then the only missing piece is to modify the implementations of the other OS's to use the value in the id parameter. That's where I can't really help. I might be able to help with Linux (I have a Ubuntu machine I can test on) but I couldn't help with MacOS.</div><div><br></div><div>Does all that sound reasonable?</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Oct 7, 2019 at 3:20 AM Steve Lhomme <<a href="mailto:robux4@ycbcr.xyz">robux4@ycbcr.xyz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 2019-10-03 21:03, Gabriel Luci wrote:<br>
> Can you point me to that proper API? I certainly don't mind using a <br>
> different method to do it if it makes more sense.<br>
<br>
I think Remi is talking about the vout_window_SetFullScreen() which can <br>
tell which output-identifier should be used. In other words that would <br>
be the name of the monitor.<br>
<br>
Right now we always pass NULL all the time, via <br>
vout_window_SetFullScreen(). That's probably where the <br>
"qt-fullscreen-screennumber" should be passed, although the name <br>
suggests it's Qt specific. It seems that the "screen id" would rather be <br>
OS/window manager specific than relying on Qt. It seems the Qt option is <br>
already handled fully by Qt, setting in the fullscreen window in the <br>
right window. But it may be broken in the current UI.<br>
<br>
> But the reason I went this route is because the SetFullscreen function <br>
> in /modules/video_output/win32/window.c already uses an OS-specific way <br>
> to select which monitor to put the video output window on <br>
> (MonitorFromWindow). So I assume that code must change if it's going to <br>
> put the window on a different monitor. It just needs to be told which <br>
> monitor somehow - I just don't know what that "somehow" would be besides <br>
> a new configuration setting.<br>
> <br>
> <br>
> On Thu, Oct 3, 2019 at 2:39 PM Rémi Denis-Courmont <<a href="mailto:remi@remlab.net" target="_blank">remi@remlab.net</a> <br>
> <mailto:<a href="mailto:remi@remlab.net" target="_blank">remi@remlab.net</a>>> wrote:<br>
> <br>
>     Hello,<br>
> <br>
>     There is already a proper API defined for this, so clearly adding an<br>
>     plugin-<br>
>     specific OS-specific setting on top is not the way to go.<br>
> <br>
>     -- <br>
>     雷米‧德尼-库尔蒙<br>
>     <a href="http://www.remlab.net/" rel="noreferrer" target="_blank">http://www.remlab.net/</a><br>
> <br>
> <br>
> <br>
>     _______________________________________________<br>
>     vlc-devel mailing list<br>
>     To unsubscribe or modify your subscription options:<br>
>     <a href="https://mailman.videolan.org/listinfo/vlc-devel" rel="noreferrer" target="_blank">https://mailman.videolan.org/listinfo/vlc-devel</a><br>
> <br>
> <br>
> _______________________________________________<br>
> vlc-devel mailing list<br>
> To unsubscribe or modify your subscription options:<br>
> <a href="https://mailman.videolan.org/listinfo/vlc-devel" rel="noreferrer" target="_blank">https://mailman.videolan.org/listinfo/vlc-devel</a><br>
> <br>
_______________________________________________<br>
vlc-devel mailing list<br>
To unsubscribe or modify your subscription options:<br>
<a href="https://mailman.videolan.org/listinfo/vlc-devel" rel="noreferrer" target="_blank">https://mailman.videolan.org/listinfo/vlc-devel</a></blockquote></div>