- Apr 19, 2025
-
-
-
-
This is useful when toggling the window title bar setting. For example, if it is switched on from off, a title bar appears and the window geometry no longer counts the title bar, but then, the mask needs to account for the title bar. This is observed with KWin, where SSD is supported (through `zxdg_decoration_manager_v1`) but not effective when the setting is switched (which effectively means switching the `FramelessWindowHint` flag), as in that case Qt platform plugin tries to decorate the window itself (probably the protocol does not support switching SSD like that). I assume this occurs because the title bar is not really server-side decoration but rather the one provided by platform decoration (`QT_WAYLAND_DECORATION`), so technically client-side decoration (managed by the platform plugin). Since when `FramelessWindowHint` is off; either SSD (`zxdg_decoration_manager_v1`), or CSD (managed by the platform plugin), in both cases the `windowExtendedMargin()` would be set to 0 in our case, this is a valid workaround instead of trying to get the client side margins with (`QWaylandWindow::clientSideMargins()`) and accounting it when applying the margins. I'm not sure if this is a Qt or KWin Wayland bug, because if CSD is handled by the platform plugin, the application should not be forced to care about the CSD. In that case for the application, it is no different than SSD. Also use `QRect(QPoint(0, 0), m_qmlView->size())` instead of `m_qmlView->geometry()` because mask should be relative to the window, not screen. Currently this does not change anything because XDG surface (at least regular ones) does not provide where it is positioned in the screen, so `QWindow::position()` returns (0, 0).
-
This is because in some cases (such as changing the interface scale) the `Column` does not re-position them.
-
As the implicit size can not be determined with word wrap. We currently depend on the implicit size starting with 452a2171.
-
Padding is considered in implicit size, it should not depend on the explicit size.
-
I wanted to use the Component approach, with relying on the JS engine's garbage collection, like I do in the scroll bar case (not creating the scroll bar when the scroll bar is irrelevant) but it was not possible here. It seems that Transition sets up the animations based on its parent, and I could not find a "target" property in Transition. Instead, I simply bind `enabled` of the transition to whether `acceptDropFunc` is valid. Testing `acceptDropFunc` is a good practice when checking whether the drag and drop is feasible in the view. This fixes the problem of the initial items getting animated when media library views load the (initial) items asynchronously. We don't want the initial items to be animated. The playlist media library views are going to be still be affected by this, as they support drag and drop and we want the transitions there, but there is not much to do about that here.
-
- Apr 18, 2025
-
-
Steve Lhomme authored
See libvlcjni!109
-
Fixes the following untracked files: ? contrib/qml/QML/plugins.qmltypes ? contrib/qml/QML/qmldir ? contrib/qml/QtCore/libqtqmlcoreplugin.a ? contrib/qml/QtCore/libqtqmlcoreplugin.prl ? contrib/qml/QtCore/plugins.qmltypes ? contrib/qml/QtCore/qmldir ? contrib/qml/QtQml/Models/libmodelsplugin.a ? contrib/qml/QtQml/Models/libmodelsplugin.prl ? contrib/qml/QtQml/Models/plugins.qmltypes ? contrib/qml/QtQml/Models/qmldir ? contrib/qml/QtQml/WorkerScript/libworkerscriptplugin.a ? contrib/qml/QtQml/WorkerScript/libworkerscriptplugin.prl ? contrib/qml/QtQml/WorkerScript/plugins.qmltypes ? contrib/qml/QtQml/WorkerScript/qmldir ? contrib/qml/QtQml/libqmlplugin.a ? contrib/qml/QtQml/libqmlplugin.prl ? contrib/qml/QtQml/plugins.qmltypes ? contrib/qml/QtQml/qmldir ? contrib/qml/QtQuick/tooling/Component.qml ? contrib/qml/QtQuick/tooling/Enum.qml ? contrib/qml/QtQuick/tooling/Member.qml ? contrib/qml/QtQuick/tooling/Method.qml ? contrib/qml/QtQuick/tooling/Module.qml ? contrib/qml/QtQuick...
-
If it is not raised, scroll bar grabs the mouse events.
-
Note that fatal messages cause Qt to abort the program. I think standard errors are best represented with critical messages. We never want Qt to abort the program itself, as in most cases we can gracefully handle the situation (as done here).
-
-
-
This was unfortunately forgotten in 04507065. I used `%` instead of `+` even though defining `QT_USE_QSTRINGBUILDER` (where we do) makes `+` behave like `%`, to explicitly request to use `QStringBuilder` noting the amount of additions done.
-
-
-
-
Fallback to FOLDERID_Pictures if FOLDERID_Screenshots can't be found.
-
Corrects the VLC_CONTRIB_REBUILD_PATHS variable for macOS builds to point to the correct extras/package subdirectory. Signed-off-by:
William Woodruff <william@trailofbits.com>
-
This patch fixes two sources of undefined behavior in the MusicBrainz module. In both cases, the undefined behavior steps from irrefutably derefencing a null pointer. Signed-off-by:
William Woodruff <william@trailofbits.com>
-
Asan report: $ ASAN_OPTIONS=halt_on_error=false ./test/test_src_misc_chroma_probe VAOP ==411069==ERROR: AddressSanitizer: heap-use-after-free on address 0x524000042830 at pc 0x7f16fd14e49e bp 0x7ffda23620c0 sp 0x7ffda23620b8 READ of size 8 at 0x524000042830 thread T0 #0 0x7f16fd14e49d in vlc_chroma_conv_result_Equals ../../src/misc/chroma_probe.c:336 #1 0x7f16fd14e49d in vlc_chroma_conv_Probe ../../src/misc/chroma_probe.c:442 #2 0x4022ba in main ../../test/src/misc/chroma_probe.c:330 #3 0x7f16fc516247 in __libc_start_call_main (/lib64/libc.so.6+0x3247) (BuildId: b6c381bfdcb5e08ea82c1c39cf16580181fb6cfc) #4 0x7f16fc51630a in __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x330a) (BuildId: b6c381bfdcb5e08ea82c1c39cf16580181fb6cfc) #5 0x403744 in _start (/var/home/asenat/Workspaces/vlan/vlc/build/test/test_src_misc_chroma_probe+0x403744) (BuildId: 67a39e0b63fa78ae2d672a359d5ce1a997726940) 0x524000042830 is located 1840 bytes inside of 6976-byte region [0x524000042100,0x524000043c40) freed by thread T0 here: #0 0x7f16fe07c7d8 in realloc.part.0 (/lib64/libasan.so.8+0xc17d8) (BuildId: 5294bd2731fcae07af92dfea7808576c57d53bc9) #1 0x7f16fd14d635 in vlc_reallocarray ../../include/vlc_common.h:1079 #2 0x7f16fd14d635 in vlc_vector_reallocdata_ ../../include/vlc_vector.h:171 #3 0x7f16fd14d635 in vlc_chroma_conv_Probe ../../src/misc/chroma_probe.c:447 #4 0x4022ba in main ../../test/src/misc/chroma_probe.c:330 #5 0x7f16fc516247 in __libc_start_call_main (/lib64/libc.so.6+0x3247) (BuildId: b6c381bfdcb5e08ea82c1c39cf16580181fb6cfc) #6 0x7f16fc51630a in __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x330a) (BuildId: b6c381bfdcb5e08ea82c1c39cf16580181fb6cfc) #7 0x403744 in _start (/var/home/asenat/Workspaces/vlan/vlc/build/test/test_src_misc_chroma_probe+0x403744) (BuildId: 67a39e0b63fa78ae2d672a359d5ce1a997726940) previously allocated by thread T0 here: #0 0x7f16fe07d8d7 in malloc (/lib64/libasan.so.8+0xc28d7) (BuildId: 5294bd2731fcae07af92dfea7808576c57d53bc9) #1 0x7f16fd14c23c in vlc_reallocarray ../../include/vlc_common.h:1079 #2 0x7f16fd14c23c in vlc_vector_reallocdata_ ../../include/vlc_vector.h:171 #3 0x7f16fd14c23c in vlc_chroma_conv_Probe ../../src/misc/chroma_probe.c:402 #4 0x4022ba in main ../../test/src/misc/chroma_probe.c:330 #5 0x7f16fc516247 in __libc_start_call_main (/lib64/libc.so.6+0x3247) (BuildId: b6c381bfdcb5e08ea82c1c39cf16580181fb6cfc) #6 0x7f16fc51630a in __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x330a) (BuildId: b6c381bfdcb5e08ea82c1c39cf16580181fb6cfc) #7 0x403744 in _start (/var/home/asenat/Workspaces/vlan/vlc/build/test/test_src_misc_chroma_probe+0x403744) (BuildId: 67a39e0b63fa78ae2d672a359d5ce1a997726940)
-
- Apr 16, 2025
-
-
Tristan Matthews authored
The dropped patches have been merged upstream.
-
- Apr 14, 2025
-
-
Tristan Matthews authored
- Bug Fixes * b:396169342: Assertion `av1_is_subpelmv_in_range(&ms_params.mv_limits, start_mv)' failed. * b:401671154: typo in void init_src_params(...) * Coverity defect 323670: Uninitialized scalar variable in encode_with_and_without_superres() * cmake: bump minimum version to 3.16 * cfl_ppc: fix subtract_average_vsx * Fix an incorrect index in av1_highbd_pixel_proj_error_neon
-
The handling through GCD was added back then in commit cc07bce0. In that commit, signal(SIGCHLD, SIG_DFL) was already called to ensure the behavior of the signal is restored to default handlers. In `man 3 signal` from the macos manual, it is said that when setting SIG_IGN for SIGCHLD, the operating system will not create zombie process and the exit status will be ignored. We do want to avoid creating zombie process but we also want to have exit status, which means we do indeed need the SIG_DFL handler here. See also the following commit on the linux side: 94763831. However, GCD was used to automatically call waitpid() on the process that are being signalled as closing. Since we're always calling waitpid when spawning any process, this duplicates the handling. But the clients are actually using vlc_waitpid which is checking errno != ECHILD, so it would break as soon as the GCD handler is executed before the vlc_waitpid call. Since every cases are explicitely calling vlc_waitpid(), do as linux and just remove the specific GCD handling. Co-authored-by:
Marvin Scholz <epirat07@gmail.com> Fixes #29099
-
- Apr 13, 2025
-
-
Signed-off-by:
Claudio Cambra <developer@claudiocambra.com>
-
Signed-off-by:
Claudio Cambra <developer@claudiocambra.com>
-
macosx: Use the acquire/return video view methods in PIP implementation in VLCMainVideoViewController Signed-off-by:
Claudio Cambra <developer@claudiocambra.com>
-
macosx: Add method to acquire and return the vout containing view from the main video view controller Signed-off-by:
Claudio Cambra <developer@claudiocambra.com>
-
- Apr 12, 2025
-
-
Signed-off-by:
Claudio Cambra <developer@claudiocambra.com>
-
macosx: Ensure the displaying of the fake title bar gets updated when going into fullscreen even if we disable library controls Signed-off-by:
Claudio Cambra <developer@claudiocambra.com>
-
This prioritize using the start_time path if start_time has been defined regardless of whether vlc_clock_SetFirstPcr has been called or not, instead of using the first_pcr path as long as first_pcr has been defined.
-
The conversion function might not have wait_sync_ref defined in the next steps as it won't generate the wait_sync_ref itself, but choosing the start_date requires transforming the current point. The assertion on wait_sync_ref is removed given that it would be NULL when using start_time. Co-authored-by:
Thomas Guillem <thomas@gllm.fr>
-
Clock must now be started from a dedicated input vlc_clock. The start is not yet mandatory but is available and will be mandatory after next patches. Previously, the clock was driven by two values: coeff and offset. The idea was that since the clock is supposed to look like an affine line, we could extrapolate any `ts` media point into `ts * coeff + offset` in system time. It meant that offset could take any value depending on the difference between system time and media time, reducing the interpretability of the values. After this patch, offset is computed from the start of the stream in the test, so it will basically only include the difference between the timestamp computation and the real clock. Co-authored-by:
Thomas Guillem <thomas@gllm.fr>
-
DecoderWaitUnblock is waiting for the vlc_input_decoder_StopWait which will be called by the es_out when every decoders are ready to start playing. When DecoderWaitUnblock is called and almost ready to return, it means that we already have a frame in the output and that playback has started. We can compute the monotonic start by calling vlc_clock_Start. Some care must be taken given that other reasons might unblock the decoders, like flushing or closing the decoder. Currently, vlc_clock_Start() does nothing as long as we didn't start the input vlc_clock_t also, but all of the code will be enabled after. Co-authored-by:
Thomas Guillem <thomas@gllm.fr>
-
Not buffered can happen if a decoder output a first frame late (after buffering)
-
This fixes a lipsync issue when a context is created from the beginning of the stream.
-
Ensure that every clocks (even input) has a valid clock_context, and specifically select them during vlc_clock_Start(), and un-select them during vlc_clock_Reset(). The previous mode is still present in the code to avoid breaking the current code until all the necessary changes are introduced, and is selected by whether the main_clock->first_pcr value has been set or not. Now that vlc_clock_main_Reset() is not called anymore at this location, the points registered from the input when it is driving the clock bus will not be removed. /!\ As a consequence, --clock-master=input now starts from the input /!\ clock points instead of starting from a monotonic clock point. This indirectly fixes an issue where the output_dejitter is accounted in computing the wait_sync_ref date, but also making all the outputs late compared to the input clock, leading to "Deferring start" messages from the audio output, and then "Starting late" message. Co-authored-by:
Thomas Guillem <thomas@gllm.fr>
-
No functional changes for now. The function will be implemented differently for the input vlc_clock, so that it always a source of new clock context, while the reset of the output clocks will allow selecting a newer clock context insteand.
-
vlc_clock_main_Reset() breaks the information inside clock context and it makes tracking the context switching harder. By using the clock-specific reset function, we'll be able to setup the behaviour of the input clock being reset and handle the creation of a new context instead.
-
wait_sync_ref should not be reset when resetting a derived clock. The clock bus should instead accept multiple possible time and choose the best start time for the given context, and reset() should only allow the clock to switch context. Co-authored-by:
Thomas Guillem <thomas@gllm.fr>
-