<div dir="ltr"><div dir="ltr">That is good to know! (that macOS doesn't use the Qt interface)</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Oct 7, 2019 at 8:57 AM Marvin Scholz <<a href="mailto:epirat07@gmail.com">epirat07@gmail.com</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"><br>
<br>
On 7 Oct 2019, at 14:42, Gabriel Luci wrote:<br>
<br>
> The Qt option is handled by Qt, yes, but it only works when the video is<br>
> embedded in the interface, which means you can't keep the controls on the<br>
> primary monitor. (I assume that's because a non-embedded video window isn't<br>
> handled by Qt anymore)<br>
><br>
> I was chatting with Alexandre off-list about this and came to a similar<br>
> conclusion. So I agree this patch can be discarded as I wrote it, and I can<br>
> resubmit with a different approach.<br>
><br>
> First, in modules/video_output/win32/window.c, I can use the id parameter<br>
> to determine the name of the monitor. I guess that's why the parameter is<br>
> there?<br>
><br>
> Then another patch would create a new setting with the monitor name and<br>
> pass it into that id parameter from further up the call stack. I think we<br>
> could go further up the call stack than vout_window_SetFullScreen(). When I<br>
> look at the call stack, I see this:<br>
><br>
>     libwin32_window_plugin.dll!SetFullscreen(vout_window_t * wnd, const<br>
> char * id) (c:\vlc\vlc\modules\video_output\win32\window.c:189)<br>
>     libvlccore.dll!vout_window_SetFullScreen(const char * id, vout_window_t<br>
> * window) (c:\vlc\vlc\include\vlc_vout_window.h:479)<br>
>     libvlccore.dll!vout_ChangeFullscreen(vout_thread_t * vout, const char *<br>
> id) (c:\vlc\vlc\src\video_output\video_output.c:390)<br>
>     libvlccore.dll!FullscreenCallback(vlc_object_t * p_this, const char *<br>
> psz_cmd, vlc_value_t oldval, vlc_value_t newval, void * p_data)<br>
> (c:\vlc\vlc\src\video_output\vout_intf.c:569)<br>
>     libvlccore.dll!TriggerCallback(vlc_object_t * obj, variable_t * var,<br>
> 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 *<br>
> psz_name, int expected_type, vlc_value_t val)<br>
> (c:\vlc\vlc\src\misc\variables.c:709)<br>
>     libvlccore.dll!vlc_player_vout_SetVar(vlc_player_t * player, const char<br>
> * 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,<br>
> _Bool enabled) (c:\vlc\vlc\src\player\vout.c:180)<br>
><br>
> At  vout_intf.c:569 (FullscreenCallback) is where it<br>
> calls vout_ChangeFullscreen(p_vout, NULL); where id is NULL. So that is<br>
> where I'm guessing it could be reading the setting and passing it as the id<br>
> instead of NULL.<br>
><br>
> Qt has a way to get a list of display devices, and that's already how<br>
> "qt-fullscreen-screennumber" is populated in the preferences window, but we<br>
> can get the name instead of the number by using ->currentText().toUtf8()<br>
> instead of ->currentData().toInt().<br>
><br>
> Then the only missing piece is to modify the implementations of the other<br>
> OS's to use the value in the id parameter. That's where I can't really<br>
> help. I might be able to help with Linux (I have a Ubuntu machine I can<br>
> test on) but I couldn't help with MacOS.<br>
<br>
macOS does not use the Qt UI, so theres no need to worry about that for<br>
now.<br>
<br>
><br>
> Does all that sound reasonable?<br>
><br>
> On Mon, Oct 7, 2019 at 3:20 AM Steve Lhomme <<a href="mailto:robux4@ycbcr.xyz" target="_blank">robux4@ycbcr.xyz</a>> wrote:<br>
><br>
>> 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><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>
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></div>