mirror of
git://slackware.nl/current.git
synced 2025-01-13 08:01:53 +01:00
Thu Feb 24 05:50:40 UTC 2022
a/aaa_libraries-15.1-x86_64-1.txz: Upgraded. Upgraded: libnsl-2.35.so, libexpat.so.1.8.6, libglib-2.0.so.0.7000.4, libgmodule-2.0.so.0.7000.4, libgthread-2.0.so.0.7000.4. Added: libicudata.so.69.1, libicui18n.so.69.1, libicuio.so.69.1, libicutest.so.69.1, libicutu.so.69.1, libicuuc.so.69.1. a/kernel-generic-5.16.11-x86_64-1.txz: Upgraded. a/kernel-huge-5.16.11-x86_64-1.txz: Upgraded. a/kernel-modules-5.16.11-x86_64-1.txz: Upgraded. a/xfsprogs-5.13.0-x86_64-2.txz: Rebuilt. Recompiled against icu4c-70.1. ap/sqlite-3.38.0-x86_64-1.txz: Upgraded. Compiled against icu4c-70.1. d/kernel-headers-5.16.11-x86-1.txz: Upgraded. k/kernel-source-5.16.11-noarch-1.txz: Upgraded. kde/bluedevil-5.24.2-x86_64-1.txz: Upgraded. kde/breeze-5.24.2-x86_64-1.txz: Upgraded. kde/breeze-grub-5.24.2-x86_64-1.txz: Upgraded. kde/breeze-gtk-5.24.2-x86_64-1.txz: Upgraded. kde/drkonqi-5.24.2-x86_64-1.txz: Upgraded. kde/kactivitymanagerd-5.24.2-x86_64-1.txz: Upgraded. kde/kde-cli-tools-5.24.2-x86_64-1.txz: Upgraded. kde/kde-gtk-config-5.24.2-x86_64-1.txz: Upgraded. kde/kdecoration-5.24.2-x86_64-1.txz: Upgraded. kde/kdeplasma-addons-5.24.2-x86_64-1.txz: Upgraded. kde/kgamma5-5.24.2-x86_64-1.txz: Upgraded. kde/khotkeys-5.24.2-x86_64-1.txz: Upgraded. kde/kinfocenter-5.24.2-x86_64-1.txz: Upgraded. kde/kmenuedit-5.24.2-x86_64-1.txz: Upgraded. kde/kscreen-5.24.2-x86_64-1.txz: Upgraded. kde/kscreenlocker-5.24.2-x86_64-1.txz: Upgraded. kde/ksshaskpass-5.24.2-x86_64-1.txz: Upgraded. kde/ksystemstats-5.24.2-x86_64-1.txz: Upgraded. kde/kwallet-pam-5.24.2-x86_64-1.txz: Upgraded. kde/kwayland-integration-5.24.2-x86_64-1.txz: Upgraded. kde/kwayland-server-5.24.2-x86_64-1.txz: Upgraded. kde/kwin-5.24.2-x86_64-1.txz: Upgraded. kde/kwrited-5.24.2-x86_64-1.txz: Upgraded. kde/layer-shell-qt-5.24.2-x86_64-1.txz: Upgraded. kde/libkscreen-5.24.2-x86_64-1.txz: Upgraded. kde/libksysguard-5.24.2-x86_64-1.txz: Upgraded. kde/milou-5.24.2-x86_64-1.txz: Upgraded. kde/okteta-0.26.7-x86_64-1.txz: Upgraded. kde/oxygen-5.24.2-x86_64-1.txz: Upgraded. kde/plasma-browser-integration-5.24.2-x86_64-1.txz: Upgraded. kde/plasma-desktop-5.24.2-x86_64-1.txz: Upgraded. kde/plasma-disks-5.24.2-x86_64-1.txz: Upgraded. kde/plasma-firewall-5.24.2-x86_64-1.txz: Upgraded. kde/plasma-integration-5.24.2-x86_64-1.txz: Upgraded. kde/plasma-nm-5.24.2-x86_64-1.txz: Upgraded. kde/plasma-pa-5.24.2-x86_64-1.txz: Upgraded. kde/plasma-sdk-5.24.2-x86_64-1.txz: Upgraded. kde/plasma-systemmonitor-5.24.2-x86_64-1.txz: Upgraded. kde/plasma-vault-5.24.2-x86_64-1.txz: Upgraded. kde/plasma-workspace-5.24.2-x86_64-1.txz: Upgraded. kde/plasma-workspace-wallpapers-5.24.2-x86_64-1.txz: Upgraded. kde/polkit-kde-agent-1-5.24.2-x86_64-1.txz: Upgraded. kde/powerdevil-5.24.2-x86_64-1.txz: Upgraded. kde/qqc2-breeze-style-5.24.2-x86_64-1.txz: Upgraded. kde/sddm-kcm-5.24.2-x86_64-1.txz: Upgraded. kde/systemsettings-5.24.2-x86_64-1.txz: Upgraded. kde/xdg-desktop-portal-kde-5.24.2-x86_64-1.txz: Upgraded. l/babl-0.1.90-x86_64-1.txz: Upgraded. l/boost-1.78.0-x86_64-2.txz: Rebuilt. Recompiled against icu4c-70.1. l/gegl-0.4.36-x86_64-1.txz: Upgraded. l/harfbuzz-3.4.0-x86_64-2.txz: Rebuilt. Recompiled against icu4c-70.1. l/icu4c-70.1-x86_64-1.txz: Upgraded. Shared library .so-version bump. l/libical-3.0.14-x86_64-2.txz: Rebuilt. Recompiled against icu4c-70.1. l/libqalculate-4.0.0-x86_64-2.txz: Rebuilt. Recompiled against icu4c-70.1. l/libvisio-0.1.7-x86_64-8.txz: Rebuilt. Recompiled against icu4c-70.1. l/qt5-5.15.3_20220222_08720135-x86_64-1.txz: Upgraded. Compiled against icu4c-70.1. Thanks to Heinz Wiesinger for updating the fetch_sources.sh script to make sure that the QtWebEngine version matches the rest of Qt, which got the latest git pull compiling again. l/qt5-webkit-5.212.0_alpha4-x86_64-8.txz: Rebuilt. Recompiled against icu4c-70.1. l/vte-0.66.2-x86_64-2.txz: Rebuilt. Recompiled against icu4c-70.1. n/dovecot-2.3.18-x86_64-2.txz: Rebuilt. Recompiled against icu4c-70.1. n/php-7.4.28-x86_64-2.txz: Rebuilt. Recompiled against icu4c-70.1. n/postfix-3.7.0-x86_64-2.txz: Rebuilt. Recompiled against icu4c-70.1. n/samba-4.15.5-x86_64-2.txz: Rebuilt. Recompiled against icu4c-70.1. n/tin-2.6.1-x86_64-2.txz: Rebuilt. Recompiled against icu4c-70.1. t/texlive-2021.210418-x86_64-3.txz: Rebuilt. Recompiled against icu4c-70.1. extra/php80/php80-8.0.16-x86_64-2.txz: Rebuilt. Recompiled against icu4c-70.1. extra/php81/php81-8.1.3-x86_64-2.txz: Rebuilt. Recompiled against icu4c-70.1. isolinux/initrd.img: Rebuilt. kernels/*: Upgraded. usb-and-pxe-installers/usbboot.img: Rebuilt.
This commit is contained in:
parent
cd1ecf258b
commit
9b8196890b
42 changed files with 725 additions and 1273 deletions
117
ChangeLog.rss
117
ChangeLog.rss
|
@ -11,9 +11,122 @@
|
|||
<description>Tracking Slackware development in git.</description>
|
||||
<language>en-us</language>
|
||||
<id xmlns="http://www.w3.org/2005/Atom">urn:uuid:c964f45e-6732-11e8-bbe5-107b4450212f</id>
|
||||
<pubDate>Tue, 22 Feb 2022 21:24:29 GMT</pubDate>
|
||||
<lastBuildDate>Wed, 23 Feb 2022 05:59:40 GMT</lastBuildDate>
|
||||
<pubDate>Thu, 24 Feb 2022 05:50:40 GMT</pubDate>
|
||||
<lastBuildDate>Thu, 24 Feb 2022 21:59:46 GMT</lastBuildDate>
|
||||
<generator>maintain_current_git.sh v 1.17</generator>
|
||||
<item>
|
||||
<title>Thu, 24 Feb 2022 05:50:40 GMT</title>
|
||||
<pubDate>Thu, 24 Feb 2022 05:50:40 GMT</pubDate>
|
||||
<link>https://git.slackware.nl/current/tag/?h=20220224055040</link>
|
||||
<guid isPermaLink="false">20220224055040</guid>
|
||||
<description>
|
||||
<![CDATA[<pre>
|
||||
a/aaa_libraries-15.1-x86_64-1.txz: Upgraded.
|
||||
Upgraded: libnsl-2.35.so, libexpat.so.1.8.6, libglib-2.0.so.0.7000.4,
|
||||
libgmodule-2.0.so.0.7000.4, libgthread-2.0.so.0.7000.4.
|
||||
Added: libicudata.so.69.1, libicui18n.so.69.1, libicuio.so.69.1,
|
||||
libicutest.so.69.1, libicutu.so.69.1, libicuuc.so.69.1.
|
||||
a/kernel-generic-5.16.11-x86_64-1.txz: Upgraded.
|
||||
a/kernel-huge-5.16.11-x86_64-1.txz: Upgraded.
|
||||
a/kernel-modules-5.16.11-x86_64-1.txz: Upgraded.
|
||||
a/xfsprogs-5.13.0-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
ap/sqlite-3.38.0-x86_64-1.txz: Upgraded.
|
||||
Compiled against icu4c-70.1.
|
||||
d/kernel-headers-5.16.11-x86-1.txz: Upgraded.
|
||||
k/kernel-source-5.16.11-noarch-1.txz: Upgraded.
|
||||
kde/bluedevil-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/breeze-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/breeze-grub-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/breeze-gtk-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/drkonqi-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kactivitymanagerd-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kde-cli-tools-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kde-gtk-config-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kdecoration-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kdeplasma-addons-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kgamma5-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/khotkeys-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kinfocenter-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kmenuedit-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kscreen-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kscreenlocker-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/ksshaskpass-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/ksystemstats-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kwallet-pam-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kwayland-integration-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kwayland-server-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kwin-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kwrited-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/layer-shell-qt-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/libkscreen-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/libksysguard-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/milou-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/okteta-0.26.7-x86_64-1.txz: Upgraded.
|
||||
kde/oxygen-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-browser-integration-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-desktop-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-disks-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-firewall-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-integration-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-nm-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-pa-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-sdk-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-systemmonitor-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-vault-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-workspace-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-workspace-wallpapers-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/polkit-kde-agent-1-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/powerdevil-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/qqc2-breeze-style-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/sddm-kcm-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/systemsettings-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/xdg-desktop-portal-kde-5.24.2-x86_64-1.txz: Upgraded.
|
||||
l/babl-0.1.90-x86_64-1.txz: Upgraded.
|
||||
l/boost-1.78.0-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
l/gegl-0.4.36-x86_64-1.txz: Upgraded.
|
||||
l/harfbuzz-3.4.0-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
l/icu4c-70.1-x86_64-1.txz: Upgraded.
|
||||
Shared library .so-version bump.
|
||||
l/libical-3.0.14-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
l/libqalculate-4.0.0-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
l/libvisio-0.1.7-x86_64-8.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
l/qt5-5.15.3_20220222_08720135-x86_64-1.txz: Upgraded.
|
||||
Compiled against icu4c-70.1.
|
||||
Thanks to Heinz Wiesinger for updating the fetch_sources.sh script to make
|
||||
sure that the QtWebEngine version matches the rest of Qt, which got the
|
||||
latest git pull compiling again.
|
||||
l/qt5-webkit-5.212.0_alpha4-x86_64-8.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
l/vte-0.66.2-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
n/dovecot-2.3.18-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
n/php-7.4.28-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
n/postfix-3.7.0-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
n/samba-4.15.5-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
n/tin-2.6.1-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
t/texlive-2021.210418-x86_64-3.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
extra/php80/php80-8.0.16-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
extra/php81/php81-8.1.3-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
isolinux/initrd.img: Rebuilt.
|
||||
kernels/*: Upgraded.
|
||||
usb-and-pxe-installers/usbboot.img: Rebuilt.
|
||||
</pre>]]>
|
||||
</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Tue, 22 Feb 2022 21:24:29 GMT</title>
|
||||
<pubDate>Tue, 22 Feb 2022 21:24:29 GMT</pubDate>
|
||||
|
|
105
ChangeLog.txt
105
ChangeLog.txt
|
@ -1,3 +1,108 @@
|
|||
Thu Feb 24 05:50:40 UTC 2022
|
||||
a/aaa_libraries-15.1-x86_64-1.txz: Upgraded.
|
||||
Upgraded: libnsl-2.35.so, libexpat.so.1.8.6, libglib-2.0.so.0.7000.4,
|
||||
libgmodule-2.0.so.0.7000.4, libgthread-2.0.so.0.7000.4.
|
||||
Added: libicudata.so.69.1, libicui18n.so.69.1, libicuio.so.69.1,
|
||||
libicutest.so.69.1, libicutu.so.69.1, libicuuc.so.69.1.
|
||||
a/kernel-generic-5.16.11-x86_64-1.txz: Upgraded.
|
||||
a/kernel-huge-5.16.11-x86_64-1.txz: Upgraded.
|
||||
a/kernel-modules-5.16.11-x86_64-1.txz: Upgraded.
|
||||
a/xfsprogs-5.13.0-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
ap/sqlite-3.38.0-x86_64-1.txz: Upgraded.
|
||||
Compiled against icu4c-70.1.
|
||||
d/kernel-headers-5.16.11-x86-1.txz: Upgraded.
|
||||
k/kernel-source-5.16.11-noarch-1.txz: Upgraded.
|
||||
kde/bluedevil-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/breeze-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/breeze-grub-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/breeze-gtk-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/drkonqi-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kactivitymanagerd-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kde-cli-tools-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kde-gtk-config-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kdecoration-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kdeplasma-addons-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kgamma5-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/khotkeys-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kinfocenter-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kmenuedit-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kscreen-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kscreenlocker-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/ksshaskpass-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/ksystemstats-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kwallet-pam-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kwayland-integration-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kwayland-server-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kwin-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/kwrited-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/layer-shell-qt-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/libkscreen-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/libksysguard-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/milou-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/okteta-0.26.7-x86_64-1.txz: Upgraded.
|
||||
kde/oxygen-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-browser-integration-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-desktop-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-disks-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-firewall-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-integration-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-nm-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-pa-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-sdk-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-systemmonitor-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-vault-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-workspace-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/plasma-workspace-wallpapers-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/polkit-kde-agent-1-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/powerdevil-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/qqc2-breeze-style-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/sddm-kcm-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/systemsettings-5.24.2-x86_64-1.txz: Upgraded.
|
||||
kde/xdg-desktop-portal-kde-5.24.2-x86_64-1.txz: Upgraded.
|
||||
l/babl-0.1.90-x86_64-1.txz: Upgraded.
|
||||
l/boost-1.78.0-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
l/gegl-0.4.36-x86_64-1.txz: Upgraded.
|
||||
l/harfbuzz-3.4.0-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
l/icu4c-70.1-x86_64-1.txz: Upgraded.
|
||||
Shared library .so-version bump.
|
||||
l/libical-3.0.14-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
l/libqalculate-4.0.0-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
l/libvisio-0.1.7-x86_64-8.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
l/qt5-5.15.3_20220222_08720135-x86_64-1.txz: Upgraded.
|
||||
Compiled against icu4c-70.1.
|
||||
Thanks to Heinz Wiesinger for updating the fetch_sources.sh script to make
|
||||
sure that the QtWebEngine version matches the rest of Qt, which got the
|
||||
latest git pull compiling again.
|
||||
l/qt5-webkit-5.212.0_alpha4-x86_64-8.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
l/vte-0.66.2-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
n/dovecot-2.3.18-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
n/php-7.4.28-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
n/postfix-3.7.0-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
n/samba-4.15.5-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
n/tin-2.6.1-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
t/texlive-2021.210418-x86_64-3.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
extra/php80/php80-8.0.16-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
extra/php81/php81-8.1.3-x86_64-2.txz: Rebuilt.
|
||||
Recompiled against icu4c-70.1.
|
||||
isolinux/initrd.img: Rebuilt.
|
||||
kernels/*: Upgraded.
|
||||
usb-and-pxe-installers/usbboot.img: Rebuilt.
|
||||
+--------------------------+
|
||||
Tue Feb 22 21:24:29 UTC 2022
|
||||
a/aaa_glibc-solibs-2.35-x86_64-2.txz: Rebuilt.
|
||||
l/glibc-2.35-x86_64-2.txz: Rebuilt.
|
||||
|
|
904
FILELIST.TXT
904
FILELIST.TXT
File diff suppressed because it is too large
Load diff
|
@ -1,7 +1,7 @@
|
|||
|
||||
Slackware initrd mini HOWTO
|
||||
by Patrick Volkerding, volkerdi@slackware.com
|
||||
Fri Feb 18 05:17:08 UTC 2022
|
||||
Thu Feb 24 05:34:06 UTC 2022
|
||||
|
||||
This document describes how to create and install an initrd, which may be
|
||||
required to use the 4.x kernel. Also see "man mkinitrd".
|
||||
|
@ -33,15 +33,15 @@ flexible to ship a generic kernel and a set of kernel modules for it.
|
|||
|
||||
The easiest way to make the initrd is to use the mkinitrd script included
|
||||
in Slackware's mkinitrd package. We'll walk through the process of
|
||||
upgrading to the generic 5.16.10 Linux kernel using the packages
|
||||
upgrading to the generic 5.16.11 Linux kernel using the packages
|
||||
found in Slackware's slackware/a/ directory.
|
||||
|
||||
First, make sure the kernel, kernel modules, and mkinitrd package are
|
||||
installed (the current version numbers might be a little different, so
|
||||
this is just an example):
|
||||
|
||||
installpkg kernel-generic-5.16.10-x86_64-1.txz
|
||||
installpkg kernel-modules-5.16.10-x86_64-1.txz
|
||||
installpkg kernel-generic-5.16.11-x86_64-1.txz
|
||||
installpkg kernel-modules-5.16.11-x86_64-1.txz
|
||||
installpkg mkinitrd-1.4.11-x86_64-28.txz
|
||||
|
||||
Change into the /boot directory:
|
||||
|
@ -52,7 +52,7 @@ Now you'll want to run "mkinitrd". I'm using ext4 for my root filesystem,
|
|||
and since the disk controller requires no special support the ext4 module
|
||||
will be the only one I need to load:
|
||||
|
||||
mkinitrd -c -k 5.16.10 -m ext4
|
||||
mkinitrd -c -k 5.16.11 -m ext4
|
||||
|
||||
This should do two things. First, it will create a directory
|
||||
/boot/initrd-tree containing the initrd's filesystem. Then it will
|
||||
|
@ -61,10 +61,10 @@ you could make some additional changes in /boot/initrd-tree/ and
|
|||
then run mkinitrd again without options to rebuild the image. That's
|
||||
optional, though, and only advanced users will need to think about that.
|
||||
|
||||
Here's another example: Build an initrd image using Linux 5.16.10
|
||||
Here's another example: Build an initrd image using Linux 5.16.11
|
||||
kernel modules for a system with an ext4 root partition on /dev/sdb3:
|
||||
|
||||
mkinitrd -c -k 5.16.10 -m ext4 -f ext4 -r /dev/sdb3
|
||||
mkinitrd -c -k 5.16.11 -m ext4 -f ext4 -r /dev/sdb3
|
||||
|
||||
|
||||
4. Now that I've built an initrd, how do I use it?
|
||||
|
|
|
@ -28,7 +28,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
PKGNAM=php
|
||||
VERSION=${VERSION:-$(echo php-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
|
||||
ALPINE=2.25
|
||||
BUILD=${BUILD:-1}
|
||||
BUILD=${BUILD:-2}
|
||||
|
||||
# Automatically determine the architecture we're building on:
|
||||
if [ -z "$ARCH" ]; then
|
||||
|
|
|
@ -28,7 +28,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
PKGNAM=php
|
||||
VERSION=${VERSION:-$(echo php-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
|
||||
ALPINE=2.25
|
||||
BUILD=${BUILD:-1}
|
||||
BUILD=${BUILD:-2}
|
||||
|
||||
# Automatically determine the architecture we're building on:
|
||||
if [ -z "$ARCH" ]; then
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
Welcome to 09Slackware6407 version 15.1 (Linux kernel 5.16.10)!
|
||||
Welcome to 09Slackware6407 version 15.1 (Linux kernel 5.16.11)!
|
||||
|
||||
If you need to pass extra parameters to the kernel, enter them at the prompt
|
||||
below after the name of the kernel to boot (e.g., huge.s).
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
|
||||
These kernels are version 5.16.10.
|
||||
These kernels are version 5.16.11.
|
||||
|
||||
|
|
|
@ -921,14 +921,11 @@ gzip ./source/l/dconf-editor/doinst.sh
|
|||
gzip ./source/l/dconf-editor/dconf-editor.ftbfs.diff
|
||||
gzip ./source/l/serf/serf.SConstruct.python3.diff
|
||||
gzip ./source/l/glib-networking/doinst.sh
|
||||
gzip ./source/l/qt5/patches/24.diff
|
||||
gzip ./source/l/qt5/patches/qt5-glibc-2.34.patch
|
||||
gzip ./source/l/qt5/patches/qt5-qtbase-gcc11.patch
|
||||
gzip ./source/l/qt5/patches/qt5-qtwebsockets-gcc11.patch
|
||||
gzip ./source/l/qt5/patches/qt5.qtbase_cmake_isystem_includes.patch
|
||||
gzip ./source/l/qt5/patches/qt5.mysql.h.diff
|
||||
gzip ./source/l/qt5/patches/qt5-qtwebengine-gcc11.patch
|
||||
gzip ./source/l/qt5/patches/qtwebengine-everywhere-src-5.15.2-%231904652.patch
|
||||
gzip ./source/l/qt5/doinst.sh
|
||||
gzip ./source/l/mozjs78/autoconf/autoconf-2.13-consolidated_fixes-1.patch
|
||||
gzip ./source/l/mozjs78/patches/fix-soname.patch
|
||||
|
|
|
@ -65,9 +65,9 @@ system. :^) Press ENTER when you are done." 21 76 10 \
|
|||
"jfsutils" "Utilities for IBM's Journaled Filesystem" "on" \
|
||||
"kbd" "Change keyboard and console mappings" "on" \
|
||||
"kernel-firmware" "Linux kernel firmware -- REQUIRED" "on" \
|
||||
"kernel-generic" "Generic 5.16.10 kernel (needs an initrd)" "on" \
|
||||
"kernel-huge" "Loaded 5.16.10 Linux kernel" "on" \
|
||||
"kernel-modules" "Linux 5.16.10 kernel modules -- REQUIRED" "on" \
|
||||
"kernel-generic" "Generic 5.16.11 kernel (needs an initrd)" "on" \
|
||||
"kernel-huge" "Loaded 5.16.11 Linux kernel" "on" \
|
||||
"kernel-modules" "Linux 5.16.11 kernel modules -- REQUIRED" "on" \
|
||||
"kmod" "Kernel module utilities -- REQUIRED" "on" \
|
||||
"lbzip2" "Parallel bzip2 compressor" "on" \
|
||||
"less" "A text pager utility - REQUIRED" "on" \
|
||||
|
|
|
@ -65,9 +65,9 @@ system. :^) Press ENTER when you are done." 21 76 10 \
|
|||
"jfsutils" "Utilities for IBM's Journaled Filesystem" "on" \
|
||||
"kbd" "Change keyboard and console mappings" "on" \
|
||||
"kernel-firmware" "Linux kernel firmware -- REQUIRED" "on" \
|
||||
"kernel-generic" "Generic 5.16.10 kernel (needs an initrd)" "on" \
|
||||
"kernel-huge" "Loaded 5.16.10 Linux kernel" "on" \
|
||||
"kernel-modules" "Linux 5.16.10 kernel modules -- REQUIRED" "on" \
|
||||
"kernel-generic" "Generic 5.16.11 kernel (needs an initrd)" "on" \
|
||||
"kernel-huge" "Loaded 5.16.11 Linux kernel" "on" \
|
||||
"kernel-modules" "Linux 5.16.11 kernel modules -- REQUIRED" "on" \
|
||||
"kmod" "Kernel module utilities -- REQUIRED" "on" \
|
||||
"lbzip2" "Parallel bzip2 compressor" "on" \
|
||||
"less" "A text pager utility - REQUIRED" "on" \
|
||||
|
|
|
@ -21,7 +21,7 @@ from series K. Use the UP/DOWN keys to scroll through the list, and \
|
|||
the SPACE key to deselect any items you don't want to install. \
|
||||
Press ENTER when you are \
|
||||
done." 11 70 1 \
|
||||
"kernel-source" "Linux 5.16.10 kernel source" "on" \
|
||||
"kernel-source" "Linux 5.16.11 kernel source" "on" \
|
||||
2> $TMP/SeTpkgs
|
||||
if [ $? = 1 -o $? = 255 ]; then
|
||||
rm -f $TMP/SeTpkgs
|
||||
|
|
|
@ -21,7 +21,7 @@ from series K. Use the UP/DOWN keys to scroll through the list, and \
|
|||
the SPACE key to deselect any items you don't want to install. \
|
||||
Press ENTER when you are \
|
||||
done." 11 70 1 \
|
||||
"kernel-source" "Linux 5.16.10 kernel source" "on" \
|
||||
"kernel-source" "Linux 5.16.11 kernel source" "on" \
|
||||
2> $TMP/SeTpkgs
|
||||
if [ $? = 1 -o $? = 255 ]; then
|
||||
rm -f $TMP/SeTpkgs
|
||||
|
|
|
@ -22,8 +22,8 @@
|
|||
cd $(dirname $0) ; CWD=$(pwd)
|
||||
|
||||
PKGNAM=aaa_libraries
|
||||
VERSION=${VERSION:-15.0}
|
||||
BUILD=${BUILD:-19}
|
||||
VERSION=${VERSION:-15.1}
|
||||
BUILD=${BUILD:-1}
|
||||
|
||||
# Automatically determine the architecture we're building on:
|
||||
if [ -z "$ARCH" ]; then
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
# We'll keep these around for a little while... probably remove on 2022-03-22 or thereabouts
|
||||
/usr/lib/libicudata.so.69
|
||||
/usr/lib/libicui18n.so.69
|
||||
/usr/lib/libicuio.so.69
|
||||
/usr/lib/libicutest.so.69
|
||||
/usr/lib/libicutu.so.69
|
||||
/usr/lib/libicuuc.so.69
|
|
@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
|
||||
PKGNAM=xfsprogs
|
||||
VERSION=${VERSION:-$(echo xfsprogs-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
|
||||
BUILD=${BUILD:-1}
|
||||
BUILD=${BUILD:-2}
|
||||
|
||||
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/x86 5.16.10 Kernel Configuration
|
||||
# Linux/x86 5.16.11 Kernel Configuration
|
||||
#
|
||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 11.2.0"
|
||||
CONFIG_CC_IS_GCC=y
|
||||
|
@ -3628,7 +3628,6 @@ CONFIG_IWLWIFI_LEDS=y
|
|||
CONFIG_IWLDVM=m
|
||||
CONFIG_IWLMVM=m
|
||||
CONFIG_IWLWIFI_OPMODE_MODULAR=y
|
||||
# CONFIG_IWLWIFI_BCAST_FILTERING is not set
|
||||
|
||||
#
|
||||
# Debugging Options
|
|
@ -1,6 +1,6 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/x86 5.16.10 Kernel Configuration
|
||||
# Linux/x86 5.16.11 Kernel Configuration
|
||||
#
|
||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 11.2.0"
|
||||
CONFIG_CC_IS_GCC=y
|
||||
|
@ -3681,7 +3681,6 @@ CONFIG_IWLWIFI_LEDS=y
|
|||
CONFIG_IWLDVM=m
|
||||
CONFIG_IWLMVM=m
|
||||
CONFIG_IWLWIFI_OPMODE_MODULAR=y
|
||||
# CONFIG_IWLWIFI_BCAST_FILTERING is not set
|
||||
|
||||
#
|
||||
# Debugging Options
|
|
@ -1,6 +1,6 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/x86 5.16.10 Kernel Configuration
|
||||
# Linux/x86 5.16.11 Kernel Configuration
|
||||
#
|
||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 11.2.0"
|
||||
CONFIG_CC_IS_GCC=y
|
||||
|
@ -3675,7 +3675,6 @@ CONFIG_IWLWIFI_LEDS=y
|
|||
CONFIG_IWLDVM=m
|
||||
CONFIG_IWLMVM=m
|
||||
CONFIG_IWLWIFI_OPMODE_MODULAR=y
|
||||
# CONFIG_IWLWIFI_BCAST_FILTERING is not set
|
||||
|
||||
#
|
||||
# Debugging Options
|
|
@ -1,6 +1,6 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/x86 5.16.10 Kernel Configuration
|
||||
# Linux/x86 5.16.11 Kernel Configuration
|
||||
#
|
||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 11.2.0"
|
||||
CONFIG_CC_IS_GCC=y
|
||||
|
@ -3628,7 +3628,6 @@ CONFIG_IWLWIFI_LEDS=y
|
|||
CONFIG_IWLDVM=m
|
||||
CONFIG_IWLMVM=m
|
||||
CONFIG_IWLWIFI_OPMODE_MODULAR=y
|
||||
# CONFIG_IWLWIFI_BCAST_FILTERING is not set
|
||||
|
||||
#
|
||||
# Debugging Options
|
|
@ -1,6 +1,6 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/x86 5.16.10 Kernel Configuration
|
||||
# Linux/x86 5.16.11 Kernel Configuration
|
||||
#
|
||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 11.2.0"
|
||||
CONFIG_CC_IS_GCC=y
|
||||
|
@ -3681,7 +3681,6 @@ CONFIG_IWLWIFI_LEDS=y
|
|||
CONFIG_IWLDVM=m
|
||||
CONFIG_IWLMVM=m
|
||||
CONFIG_IWLWIFI_OPMODE_MODULAR=y
|
||||
# CONFIG_IWLWIFI_BCAST_FILTERING is not set
|
||||
|
||||
#
|
||||
# Debugging Options
|
|
@ -1,6 +1,6 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/x86 5.16.10 Kernel Configuration
|
||||
# Linux/x86 5.16.11 Kernel Configuration
|
||||
#
|
||||
CONFIG_CC_VERSION_TEXT="gcc (GCC) 11.2.0"
|
||||
CONFIG_CC_IS_GCC=y
|
||||
|
@ -3675,7 +3675,6 @@ CONFIG_IWLWIFI_LEDS=y
|
|||
CONFIG_IWLDVM=m
|
||||
CONFIG_IWLMVM=m
|
||||
CONFIG_IWLWIFI_OPMODE_MODULAR=y
|
||||
# CONFIG_IWLWIFI_BCAST_FILTERING is not set
|
||||
|
||||
#
|
||||
# Debugging Options
|
|
@ -1 +1 @@
|
|||
2
|
||||
1
|
||||
|
|
|
@ -30,7 +30,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
|
||||
PKGNAM=boost
|
||||
VERSION=${VERSION:-$(echo $PKGNAM_*.tar.?z | rev | cut -f 3- -d . | rev | cut -f 2- -d _)}
|
||||
BUILD=${BUILD:-1}
|
||||
BUILD=${BUILD:-2}
|
||||
|
||||
PKG_VERSION=$(echo $VERSION | tr _ .) # Leave this alone
|
||||
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
|
||||
|
|
|
@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
|
||||
PKGNAM=gegl
|
||||
VERSION=${VERSION:-$(echo gegl-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
|
||||
BUILD=${BUILD:-3}
|
||||
BUILD=${BUILD:-1}
|
||||
|
||||
# Automatically determine the architecture we're building on:
|
||||
if [ -z "$ARCH" ]; then
|
||||
|
|
|
@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
|
||||
PKGNAM=harfbuzz
|
||||
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
|
||||
BUILD=${BUILD:-1}
|
||||
BUILD=${BUILD:-2}
|
||||
|
||||
# Automatically determine the architecture we're building on:
|
||||
if [ -z "$ARCH" ]; then
|
||||
|
|
|
@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
|
||||
PKGNAM=libical
|
||||
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
|
||||
BUILD=${BUILD:-1}
|
||||
BUILD=${BUILD:-2}
|
||||
|
||||
# Automatically determine the architecture we're building on:
|
||||
if [ -z "$ARCH" ]; then
|
||||
|
|
|
@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
|
||||
PKGNAM=libqalculate
|
||||
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
|
||||
BUILD=${BUILD:-1}
|
||||
BUILD=${BUILD:-2}
|
||||
|
||||
# Automatically determine the architecture we're building on:
|
||||
if [ -z "$ARCH" ]; then
|
||||
|
|
|
@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
|
||||
PKGNAM=libvisio
|
||||
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
|
||||
BUILD=${BUILD:-7}
|
||||
BUILD=${BUILD:-8}
|
||||
|
||||
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ PKGNAM=qt5-webkit
|
|||
SRCNAM=qtwebkit
|
||||
SRCVER=${SRCVER:-5.212.0-alpha4}
|
||||
VERSION=$(echo $SRCVER | tr - _)
|
||||
BUILD=${BUILD:-7}
|
||||
BUILD=${BUILD:-8}
|
||||
|
||||
# Automatically determine the architecture we're building on:
|
||||
if [ -z "$ARCH" ]; then
|
||||
|
|
|
@ -30,6 +30,9 @@ cd qt5
|
|||
git checkout kde/5.15
|
||||
./init-repository
|
||||
|
||||
# Sync qtwebengine version with the rest of qt5
|
||||
sed -i -E "s/5.15.(.*)/5.15.3/" qtwebengine/.qmake.conf
|
||||
|
||||
for i in $(find . -type d -name "qt*" -maxdepth 1); do
|
||||
cd $i
|
||||
../qtbase/bin/syncqt.pl -version $BRANCH
|
||||
|
|
|
@ -1,585 +0,0 @@
|
|||
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
|
||||
index ea344c61c3a4643f7c725a6287f20d742b210d24..a7ce280a5df538917758e50ba8d2ee117378d546 100644
|
||||
--- a/src/client/qwaylanddisplay.cpp
|
||||
+++ b/src/client/qwaylanddisplay.cpp
|
||||
@@ -85,10 +85,203 @@
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
+#include <tuple> // for std::tie
|
||||
+
|
||||
+static void checkWaylandError(struct wl_display *display)
|
||||
+{
|
||||
+ int ecode = wl_display_get_error(display);
|
||||
+ if ((ecode == EPIPE || ecode == ECONNRESET)) {
|
||||
+ // special case this to provide a nicer error
|
||||
+ qWarning("The Wayland connection broke. Did the Wayland compositor die?");
|
||||
+ } else {
|
||||
+ qWarning("The Wayland connection experienced a fatal error: %s", strerror(ecode));
|
||||
+ }
|
||||
+ _exit(1);
|
||||
+}
|
||||
+
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
namespace QtWaylandClient {
|
||||
|
||||
+class EventThread : public QThread
|
||||
+{
|
||||
+ Q_OBJECT
|
||||
+public:
|
||||
+ enum OperatingMode {
|
||||
+ EmitToDispatch, // Emit the signal, allow dispatching in a differnt thread.
|
||||
+ SelfDispatch, // Dispatch the events inside this thread.
|
||||
+ };
|
||||
+
|
||||
+ EventThread(struct wl_display * wl, struct wl_event_queue * ev_queue,
|
||||
+ OperatingMode mode)
|
||||
+ : m_fd(wl_display_get_fd(wl))
|
||||
+ , m_pipefd{ -1, -1 }
|
||||
+ , m_wldisplay(wl)
|
||||
+ , m_wlevqueue(ev_queue)
|
||||
+ , m_mode(mode)
|
||||
+ , m_reading(true)
|
||||
+ , m_quitting(false)
|
||||
+ {
|
||||
+ setObjectName(QStringLiteral("WaylandEventThread"));
|
||||
+ }
|
||||
+
|
||||
+ void readAndDispatchEvents()
|
||||
+ {
|
||||
+ /*
|
||||
+ * Dispatch pending events and flush the requests at least once. If the event thread
|
||||
+ * is not reading, try to call _prepare_read() to allow the event thread to poll().
|
||||
+ * If that fails, re-try dispatch & flush again until _prepare_read() is successful.
|
||||
+ *
|
||||
+ * This allow any call to readAndDispatchEvents() to start event thread's polling,
|
||||
+ * not only the one issued from event thread's waitForReading(), which means functions
|
||||
+ * called from dispatch_pending() can safely spin an event loop.
|
||||
+ */
|
||||
+ for (;;) {
|
||||
+ if (dispatchQueuePending() < 0) {
|
||||
+ checkWaylandError(m_wldisplay);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ wl_display_flush(m_wldisplay);
|
||||
+
|
||||
+ // We have to check if event thread is reading every time we dispatch
|
||||
+ // something, as that may recursively call this function.
|
||||
+ if (m_reading.loadAcquire())
|
||||
+ break;
|
||||
+
|
||||
+ if (prepareReadQueue() == 0) {
|
||||
+ QMutexLocker l(&m_mutex);
|
||||
+ m_reading.storeRelease(true);
|
||||
+ m_cond.wakeOne();
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ void stop()
|
||||
+ {
|
||||
+ // We have to both write to the pipe and set the flag, as the thread may be
|
||||
+ // either in the poll() or waiting for _prepare_read().
|
||||
+ if (m_pipefd[1] != -1 && write(m_pipefd[1], "\0", 1) == -1)
|
||||
+ qWarning("Failed to write to the pipe: %s.", strerror(errno));
|
||||
+
|
||||
+ {
|
||||
+ QMutexLocker l(&m_mutex);
|
||||
+ m_quitting = true;
|
||||
+ m_cond.wakeOne();
|
||||
+ }
|
||||
+
|
||||
+ wait();
|
||||
+ }
|
||||
+
|
||||
+Q_SIGNALS:
|
||||
+ void needReadAndDispatch();
|
||||
+
|
||||
+protected:
|
||||
+ void run() override
|
||||
+ {
|
||||
+ // we use this pipe to make the loop exit otherwise if we simply used a flag on the loop condition, if stop() gets
|
||||
+ // called while poll() is blocking the thread will never quit since there are no wayland messages coming anymore.
|
||||
+ struct Pipe
|
||||
+ {
|
||||
+ Pipe(int *fds)
|
||||
+ : fds(fds)
|
||||
+ {
|
||||
+ if (qt_safe_pipe(fds) != 0)
|
||||
+ qWarning("Pipe creation failed. Quitting may hang.");
|
||||
+ }
|
||||
+ ~Pipe()
|
||||
+ {
|
||||
+ if (fds[0] != -1) {
|
||||
+ close(fds[0]);
|
||||
+ close(fds[1]);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ int *fds;
|
||||
+ } pipe(m_pipefd);
|
||||
+
|
||||
+ // Make the main thread call wl_prepare_read(), dispatch the pending messages and flush the
|
||||
+ // outbound ones. Wait until it's done before proceeding, unless we're told to quit.
|
||||
+ while (waitForReading()) {
|
||||
+ pollfd fds[2] = { { m_fd, POLLIN, 0 }, { m_pipefd[0], POLLIN, 0 } };
|
||||
+ poll(fds, 2, -1);
|
||||
+
|
||||
+ if (fds[1].revents & POLLIN) {
|
||||
+ // we don't really care to read the byte that was written here since we're closing down
|
||||
+ wl_display_cancel_read(m_wldisplay);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (fds[0].revents & POLLIN)
|
||||
+ wl_display_read_events(m_wldisplay);
|
||||
+ // The polll was succesfull and the event thread did the wl_display_read_events(). On the next iteration of the loop
|
||||
+ // the event sent to the main thread will cause it to dispatch the messages just read, unless the loop exits in which
|
||||
+ // case we don't care anymore about them.
|
||||
+ else
|
||||
+ wl_display_cancel_read(m_wldisplay);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+private:
|
||||
+ bool waitForReading()
|
||||
+ {
|
||||
+ Q_ASSERT(QThread::currentThread() == this);
|
||||
+
|
||||
+ m_reading.storeRelease(false);
|
||||
+
|
||||
+ if (m_mode == SelfDispatch) {
|
||||
+ readAndDispatchEvents();
|
||||
+ } else {
|
||||
+ Q_EMIT needReadAndDispatch();
|
||||
+
|
||||
+ QMutexLocker lock(&m_mutex);
|
||||
+ // m_reading might be set from our emit or some other invocation of
|
||||
+ // readAndDispatchEvents().
|
||||
+ while (!m_reading.loadRelaxed() && !m_quitting)
|
||||
+ m_cond.wait(&m_mutex);
|
||||
+ }
|
||||
+
|
||||
+ return !m_quitting;
|
||||
+ }
|
||||
+
|
||||
+ int dispatchQueuePending()
|
||||
+ {
|
||||
+ if (m_wlevqueue)
|
||||
+ return wl_display_dispatch_queue_pending(m_wldisplay, m_wlevqueue);
|
||||
+ else
|
||||
+ return wl_display_dispatch_pending(m_wldisplay);
|
||||
+ }
|
||||
+
|
||||
+ int prepareReadQueue()
|
||||
+ {
|
||||
+ if (m_wlevqueue)
|
||||
+ return wl_display_prepare_read_queue(m_wldisplay, m_wlevqueue);
|
||||
+ else
|
||||
+ return wl_display_prepare_read(m_wldisplay);
|
||||
+ }
|
||||
+
|
||||
+ int m_fd;
|
||||
+ int m_pipefd[2];
|
||||
+ wl_display *m_wldisplay;
|
||||
+ wl_event_queue *m_wlevqueue;
|
||||
+ OperatingMode m_mode;
|
||||
+
|
||||
+ /* Concurrency note when operating in EmitToDispatch mode:
|
||||
+ * m_reading is set to false inside event thread's waitForReading(), and is
|
||||
+ * set to true inside main thread's readAndDispatchEvents().
|
||||
+ * The lock is not taken when setting m_reading to false, as the main thread
|
||||
+ * is not actively waiting for it to turn false. However, the lock is taken
|
||||
+ * inside readAndDispatchEvents() before setting m_reading to true,
|
||||
+ * as the event thread is actively waiting for it under the wait condition.
|
||||
+ */
|
||||
+
|
||||
+ QAtomicInteger<bool> m_reading;
|
||||
+ bool m_quitting;
|
||||
+ QMutex m_mutex;
|
||||
+ QWaitCondition m_cond;
|
||||
+};
|
||||
+
|
||||
Q_LOGGING_CATEGORY(lcQpaWayland, "qt.qpa.wayland"); // for general (uncategorized) Wayland platform logging
|
||||
|
||||
struct wl_surface *QWaylandDisplay::createSurface(void *handle)
|
||||
@@ -158,17 +351,16 @@ QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration)
|
||||
if (!mXkbContext)
|
||||
qCWarning(lcQpaWayland, "failed to create xkb context");
|
||||
#endif
|
||||
-
|
||||
- forceRoundTrip();
|
||||
-
|
||||
- if (!mWaitingScreens.isEmpty()) {
|
||||
- // Give wl_output.done and zxdg_output_v1.done events a chance to arrive
|
||||
- forceRoundTrip();
|
||||
- }
|
||||
}
|
||||
|
||||
QWaylandDisplay::~QWaylandDisplay(void)
|
||||
{
|
||||
+ if (m_eventThread)
|
||||
+ m_eventThread->stop();
|
||||
+
|
||||
+ if (m_frameEventQueueThread)
|
||||
+ m_frameEventQueueThread->stop();
|
||||
+
|
||||
if (mSyncCallback)
|
||||
wl_callback_destroy(mSyncCallback);
|
||||
|
||||
@@ -189,6 +381,18 @@ QWaylandDisplay::~QWaylandDisplay(void)
|
||||
wl_display_disconnect(mDisplay);
|
||||
}
|
||||
|
||||
+// Steps which is called just after constructor. This separates registry_global() out of the constructor
|
||||
+// so that factory functions in integration can be overridden.
|
||||
+void QWaylandDisplay::initialize()
|
||||
+{
|
||||
+ forceRoundTrip();
|
||||
+
|
||||
+ if (!mWaitingScreens.isEmpty()) {
|
||||
+ // Give wl_output.done and zxdg_output_v1.done events a chance to arrive
|
||||
+ forceRoundTrip();
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
void QWaylandDisplay::ensureScreen()
|
||||
{
|
||||
if (!mScreens.empty() || mPlaceholderScreen)
|
||||
@@ -203,98 +407,37 @@ void QWaylandDisplay::ensureScreen()
|
||||
|
||||
void QWaylandDisplay::checkError() const
|
||||
{
|
||||
- int ecode = wl_display_get_error(mDisplay);
|
||||
- if ((ecode == EPIPE || ecode == ECONNRESET)) {
|
||||
- // special case this to provide a nicer error
|
||||
- qWarning("The Wayland connection broke. Did the Wayland compositor die?");
|
||||
- } else {
|
||||
- qWarning("The Wayland connection experienced a fatal error: %s", strerror(ecode));
|
||||
- }
|
||||
- _exit(1);
|
||||
+ checkWaylandError(mDisplay);
|
||||
}
|
||||
|
||||
+// Called in main thread, either from queued signal or directly.
|
||||
void QWaylandDisplay::flushRequests()
|
||||
{
|
||||
- if (wl_display_prepare_read(mDisplay) == 0) {
|
||||
- wl_display_read_events(mDisplay);
|
||||
- }
|
||||
-
|
||||
- if (wl_display_dispatch_pending(mDisplay) < 0)
|
||||
- checkError();
|
||||
-
|
||||
- {
|
||||
- QReadLocker locker(&m_frameQueueLock);
|
||||
- for (const FrameQueue &q : mExternalQueues) {
|
||||
- QMutexLocker locker(q.mutex);
|
||||
- while (wl_display_prepare_read_queue(mDisplay, q.queue) != 0)
|
||||
- wl_display_dispatch_queue_pending(mDisplay, q.queue);
|
||||
- wl_display_read_events(mDisplay);
|
||||
- wl_display_dispatch_queue_pending(mDisplay, q.queue);
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- wl_display_flush(mDisplay);
|
||||
-}
|
||||
-
|
||||
-void QWaylandDisplay::blockingReadEvents()
|
||||
-{
|
||||
- if (wl_display_dispatch(mDisplay) < 0)
|
||||
- checkError();
|
||||
-}
|
||||
-
|
||||
-void QWaylandDisplay::destroyFrameQueue(const QWaylandDisplay::FrameQueue &q)
|
||||
-{
|
||||
- QWriteLocker locker(&m_frameQueueLock);
|
||||
- auto it = std::find_if(mExternalQueues.begin(),
|
||||
- mExternalQueues.end(),
|
||||
- [&q] (const QWaylandDisplay::FrameQueue &other){ return other.queue == q.queue; });
|
||||
- Q_ASSERT(it != mExternalQueues.end());
|
||||
- mExternalQueues.erase(it);
|
||||
- if (q.queue != nullptr)
|
||||
- wl_event_queue_destroy(q.queue);
|
||||
- delete q.mutex;
|
||||
+ m_eventThread->readAndDispatchEvents();
|
||||
}
|
||||
|
||||
-QWaylandDisplay::FrameQueue QWaylandDisplay::createFrameQueue()
|
||||
+// We have to wait until we have an eventDispatcher before creating the eventThread,
|
||||
+// otherwise forceRoundTrip() may block inside _events_read() because eventThread is
|
||||
+// polling.
|
||||
+void QWaylandDisplay::initEventThread()
|
||||
{
|
||||
- QWriteLocker locker(&m_frameQueueLock);
|
||||
- FrameQueue q{createEventQueue()};
|
||||
- mExternalQueues.append(q);
|
||||
- return q;
|
||||
-}
|
||||
+ m_eventThread.reset(
|
||||
+ new EventThread(mDisplay, /* default queue */ nullptr, EventThread::EmitToDispatch));
|
||||
+ connect(m_eventThread.get(), &EventThread::needReadAndDispatch, this,
|
||||
+ &QWaylandDisplay::flushRequests, Qt::QueuedConnection);
|
||||
+ m_eventThread->start();
|
||||
|
||||
-wl_event_queue *QWaylandDisplay::createEventQueue()
|
||||
-{
|
||||
- return wl_display_create_queue(mDisplay);
|
||||
+ // wl_display_disconnect() free this.
|
||||
+ m_frameEventQueue = wl_display_create_queue(mDisplay);
|
||||
+ m_frameEventQueueThread.reset(
|
||||
+ new EventThread(mDisplay, m_frameEventQueue, EventThread::SelfDispatch));
|
||||
+ m_frameEventQueueThread->start();
|
||||
}
|
||||
|
||||
-void QWaylandDisplay::dispatchQueueWhile(wl_event_queue *queue, std::function<bool ()> condition, int timeout)
|
||||
+void QWaylandDisplay::blockingReadEvents()
|
||||
{
|
||||
- if (!condition())
|
||||
- return;
|
||||
-
|
||||
- QElapsedTimer timer;
|
||||
- timer.start();
|
||||
- struct pollfd pFd = qt_make_pollfd(wl_display_get_fd(mDisplay), POLLIN);
|
||||
- while (timeout == -1 || timer.elapsed() < timeout) {
|
||||
- while (wl_display_prepare_read_queue(mDisplay, queue) != 0)
|
||||
- wl_display_dispatch_queue_pending(mDisplay, queue);
|
||||
-
|
||||
- wl_display_flush(mDisplay);
|
||||
-
|
||||
- const int remaining = qMax(timeout - timer.elapsed(), 0ll);
|
||||
- const int pollTimeout = timeout == -1 ? -1 : remaining;
|
||||
- if (qt_poll_msecs(&pFd, 1, pollTimeout) > 0)
|
||||
- wl_display_read_events(mDisplay);
|
||||
- else
|
||||
- wl_display_cancel_read(mDisplay);
|
||||
-
|
||||
- if (wl_display_dispatch_queue_pending(mDisplay, queue) < 0)
|
||||
- checkError();
|
||||
-
|
||||
- if (!condition())
|
||||
- break;
|
||||
- }
|
||||
+ if (wl_display_dispatch(mDisplay) < 0)
|
||||
+ checkWaylandError(mDisplay);
|
||||
}
|
||||
|
||||
QWaylandScreen *QWaylandDisplay::screenForOutput(struct wl_output *output) const
|
||||
@@ -669,4 +812,6 @@ QWaylandCursorTheme *QWaylandDisplay::loadCursorTheme(const QString &name, int p
|
||||
|
||||
} // namespace QtWaylandClient
|
||||
|
||||
+#include "qwaylanddisplay.moc"
|
||||
+
|
||||
QT_END_NAMESPACE
|
||||
diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h
|
||||
index 09a1736a267d2816873667e9f1ecb4f4892f0ed0..42bc661d3064d770aa9fde8bd62ecdbbc89732a2 100644
|
||||
--- a/src/client/qwaylanddisplay_p.h
|
||||
+++ b/src/client/qwaylanddisplay_p.h
|
||||
@@ -109,6 +109,7 @@ class QWaylandSurface;
|
||||
class QWaylandShellIntegration;
|
||||
class QWaylandCursor;
|
||||
class QWaylandCursorTheme;
|
||||
+class EventThread;
|
||||
|
||||
typedef void (*RegistryListener)(void *data,
|
||||
struct wl_registry *registry,
|
||||
@@ -120,15 +121,11 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandDisplay : public QObject, public QtWayland
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
- struct FrameQueue {
|
||||
- FrameQueue(wl_event_queue *q = nullptr) : queue(q), mutex(new QMutex) {}
|
||||
- wl_event_queue *queue;
|
||||
- QMutex *mutex;
|
||||
- };
|
||||
-
|
||||
QWaylandDisplay(QWaylandIntegration *waylandIntegration);
|
||||
~QWaylandDisplay(void) override;
|
||||
|
||||
+ void initialize();
|
||||
+
|
||||
#if QT_CONFIG(xkbcommon)
|
||||
struct xkb_context *xkbContext() const { return mXkbContext.get(); }
|
||||
#endif
|
||||
@@ -210,12 +207,11 @@ public:
|
||||
void handleKeyboardFocusChanged(QWaylandInputDevice *inputDevice);
|
||||
void handleWindowDestroyed(QWaylandWindow *window);
|
||||
|
||||
- wl_event_queue *createEventQueue();
|
||||
- FrameQueue createFrameQueue();
|
||||
- void destroyFrameQueue(const FrameQueue &q);
|
||||
- void dispatchQueueWhile(wl_event_queue *queue, std::function<bool()> condition, int timeout = -1);
|
||||
+ wl_event_queue *frameEventQueue() { return m_frameEventQueue; };
|
||||
|
||||
bool isKeyboardAvailable() const;
|
||||
+
|
||||
+ void initEventThread();
|
||||
public slots:
|
||||
void blockingReadEvents();
|
||||
void flushRequests();
|
||||
@@ -238,6 +234,9 @@ private:
|
||||
};
|
||||
|
||||
struct wl_display *mDisplay = nullptr;
|
||||
+ QScopedPointer<EventThread> m_eventThread;
|
||||
+ wl_event_queue *m_frameEventQueue = nullptr;
|
||||
+ QScopedPointer<EventThread> m_frameEventQueueThread;
|
||||
QtWayland::wl_compositor mCompositor;
|
||||
QScopedPointer<QWaylandShm> mShm;
|
||||
QList<QWaylandScreen *> mWaitingScreens;
|
||||
@@ -274,11 +273,9 @@ private:
|
||||
QWaylandInputDevice *mLastInputDevice = nullptr;
|
||||
QPointer<QWaylandWindow> mLastInputWindow;
|
||||
QPointer<QWaylandWindow> mLastKeyboardFocus;
|
||||
- QVector<QWaylandWindow *> mActiveWindows;
|
||||
- QVector<FrameQueue> mExternalQueues;
|
||||
+ QList<QWaylandWindow *> mActiveWindows;
|
||||
struct wl_callback *mSyncCallback = nullptr;
|
||||
static const wl_callback_listener syncCallbackListener;
|
||||
- QReadWriteLock m_frameQueueLock;
|
||||
|
||||
bool mClientSideInputContextRequested = !QPlatformInputContextFactory::requested().isNull();
|
||||
|
||||
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
|
||||
index e5e7dd42c9b0145f4c9852f7e15dcc83106c321d..3b876047293887d17eeb28819c7386ded9e1f131 100644
|
||||
--- a/src/client/qwaylandintegration.cpp
|
||||
+++ b/src/client/qwaylandintegration.cpp
|
||||
@@ -192,14 +192,18 @@ QAbstractEventDispatcher *QWaylandIntegration::createEventDispatcher() const
|
||||
|
||||
void QWaylandIntegration::initialize()
|
||||
{
|
||||
+ mDisplay->initEventThread();
|
||||
+
|
||||
+ // Call after eventDispatcher is fully connected, for QWaylandDisplay::forceRoundTrip()
|
||||
+ mDisplay->initialize();
|
||||
+
|
||||
+ // But the aboutToBlock() and awake() should be connected after initializePlatform().
|
||||
+ // Otherwise the connected flushRequests() may consumes up all events before processEvents starts to wait,
|
||||
+ // so that processEvents(QEventLoop::WaitForMoreEvents) may be blocked in the forceRoundTrip().
|
||||
QAbstractEventDispatcher *dispatcher = QGuiApplicationPrivate::eventDispatcher;
|
||||
QObject::connect(dispatcher, SIGNAL(aboutToBlock()), mDisplay.data(), SLOT(flushRequests()));
|
||||
QObject::connect(dispatcher, SIGNAL(awake()), mDisplay.data(), SLOT(flushRequests()));
|
||||
|
||||
- int fd = wl_display_get_fd(mDisplay->wl_display());
|
||||
- QSocketNotifier *sn = new QSocketNotifier(fd, QSocketNotifier::Read, mDisplay.data());
|
||||
- QObject::connect(sn, SIGNAL(activated(QSocketDescriptor)), mDisplay.data(), SLOT(flushRequests()));
|
||||
-
|
||||
// Qt does not support running with no screens
|
||||
mDisplay->ensureScreen();
|
||||
}
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index 1597f67e63ae7834ded50e25b0acf86b71abcd73..7de19a742b6d3f6a3ce0955f59a5bf2879d29c9e 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -76,7 +76,6 @@ QWaylandWindow *QWaylandWindow::mMouseGrab = nullptr;
|
||||
QWaylandWindow::QWaylandWindow(QWindow *window, QWaylandDisplay *display)
|
||||
: QPlatformWindow(window)
|
||||
, mDisplay(display)
|
||||
- , mFrameQueue(mDisplay->createFrameQueue())
|
||||
, mResizeAfterSwap(qEnvironmentVariableIsSet("QT_WAYLAND_RESIZE_AFTER_SWAP"))
|
||||
{
|
||||
{
|
||||
@@ -95,8 +94,6 @@ QWaylandWindow::QWaylandWindow(QWindow *window, QWaylandDisplay *display)
|
||||
|
||||
QWaylandWindow::~QWaylandWindow()
|
||||
{
|
||||
- mDisplay->destroyFrameQueue(mFrameQueue);
|
||||
-
|
||||
delete mWindowDecoration;
|
||||
|
||||
if (mSurface)
|
||||
@@ -635,6 +632,8 @@ const wl_callback_listener QWaylandWindow::callbackListener = {
|
||||
|
||||
void QWaylandWindow::handleFrameCallback()
|
||||
{
|
||||
+ QMutexLocker locker(&mFrameSyncMutex);
|
||||
+
|
||||
mWaitingForFrameCallback = false;
|
||||
mFrameCallbackElapsedTimer.invalidate();
|
||||
|
||||
@@ -656,12 +655,16 @@ void QWaylandWindow::handleFrameCallback()
|
||||
mWaitingForUpdateDelivery = true;
|
||||
QMetaObject::invokeMethod(this, doHandleExpose, Qt::QueuedConnection);
|
||||
}
|
||||
+
|
||||
+ mFrameSyncWait.notify_all();
|
||||
}
|
||||
|
||||
bool QWaylandWindow::waitForFrameSync(int timeout)
|
||||
{
|
||||
- QMutexLocker locker(mFrameQueue.mutex);
|
||||
- mDisplay->dispatchQueueWhile(mFrameQueue.queue, [&]() { return mWaitingForFrameCallback; }, timeout);
|
||||
+ QMutexLocker locker(&mFrameSyncMutex);
|
||||
+
|
||||
+ QDeadlineTimer deadline(timeout);
|
||||
+ while (mWaitingForFrameCallback && mFrameSyncWait.wait(&mFrameSyncMutex, deadline)) { }
|
||||
|
||||
if (mWaitingForFrameCallback) {
|
||||
qCDebug(lcWaylandBackingstore) << "Didn't receive frame callback in time, window should now be inexposed";
|
||||
@@ -1157,8 +1160,11 @@ void QWaylandWindow::requestUpdate()
|
||||
Q_ASSERT(hasPendingUpdateRequest()); // should be set by QPA
|
||||
|
||||
// If we have a frame callback all is good and will be taken care of there
|
||||
- if (mWaitingForFrameCallback)
|
||||
- return;
|
||||
+ {
|
||||
+ QMutexLocker locker(&mFrameSyncMutex);
|
||||
+ if (mWaitingForFrameCallback)
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
// If we've already called deliverUpdateRequest(), but haven't seen any attach+commit/swap yet
|
||||
// This is a somewhat redundant behavior and might indicate a bug in the calling code, so log
|
||||
@@ -1171,7 +1177,12 @@ void QWaylandWindow::requestUpdate()
|
||||
// so use invokeMethod to delay the delivery a bit.
|
||||
QMetaObject::invokeMethod(this, [this] {
|
||||
// Things might have changed in the meantime
|
||||
- if (hasPendingUpdateRequest() && !mWaitingForFrameCallback)
|
||||
+ {
|
||||
+ QMutexLocker locker(&mFrameSyncMutex);
|
||||
+ if (mWaitingForFrameCallback)
|
||||
+ return;
|
||||
+ }
|
||||
+ if (hasPendingUpdateRequest())
|
||||
deliverUpdateRequest();
|
||||
}, Qt::QueuedConnection);
|
||||
}
|
||||
@@ -1191,9 +1202,10 @@ void QWaylandWindow::handleUpdate()
|
||||
if (!mSurface)
|
||||
return;
|
||||
|
||||
- QMutexLocker locker(mFrameQueue.mutex);
|
||||
+ QMutexLocker locker(&mFrameSyncMutex);
|
||||
+
|
||||
struct ::wl_surface *wrappedSurface = reinterpret_cast<struct ::wl_surface *>(wl_proxy_create_wrapper(mSurface->object()));
|
||||
- wl_proxy_set_queue(reinterpret_cast<wl_proxy *>(wrappedSurface), mFrameQueue.queue);
|
||||
+ wl_proxy_set_queue(reinterpret_cast<wl_proxy *>(wrappedSurface), mDisplay->frameEventQueue());
|
||||
mFrameCallback = wl_surface_frame(wrappedSurface);
|
||||
wl_proxy_wrapper_destroy(wrappedSurface);
|
||||
wl_callback_add_listener(mFrameCallback, &QWaylandWindow::callbackListener, this);
|
||||
@@ -1203,6 +1215,8 @@ void QWaylandWindow::handleUpdate()
|
||||
// Start a timer for handling the case when the compositor stops sending frame callbacks.
|
||||
if (mFrameCallbackTimeout > 0) {
|
||||
QMetaObject::invokeMethod(this, [this] {
|
||||
+ QMutexLocker locker(&mFrameSyncMutex);
|
||||
+
|
||||
if (mWaitingForFrameCallback) {
|
||||
if (mFrameCallbackCheckIntervalTimerId < 0)
|
||||
mFrameCallbackCheckIntervalTimerId = startTimer(mFrameCallbackTimeout);
|
||||
diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
|
||||
index e06879620c3d033f093b0866f018ec80a72a97c3..d45980a80e9ecc9c5003fa2144de63e6337bda8a 100644
|
||||
--- a/src/client/qwaylandwindow_p.h
|
||||
+++ b/src/client/qwaylandwindow_p.h
|
||||
@@ -232,7 +232,7 @@ protected:
|
||||
int mFrameCallbackCheckIntervalTimerId = -1;
|
||||
QElapsedTimer mFrameCallbackElapsedTimer;
|
||||
struct ::wl_callback *mFrameCallback = nullptr;
|
||||
- QWaylandDisplay::FrameQueue mFrameQueue;
|
||||
+ QMutex mFrameSyncMutex;
|
||||
QWaitCondition mFrameSyncWait;
|
||||
|
||||
// True when we have called deliverRequestUpdate, but the client has not yet attached a new buffer
|
|
@ -1,24 +0,0 @@
|
|||
diff -aurN qt-everywhere-src-5.15.3_20210826_21ea9c12/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc qt-everywhere-src-5.15.3_20210826_21ea9c12-mod/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc
|
||||
--- qt-everywhere-src-5.15.3_20210826_21ea9c12/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc 2021-08-29 05:12:01.000000000 +0200
|
||||
+++ qt-everywhere-src-5.15.3_20210826_21ea9c12-mod/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc 2021-09-25 12:52:13.032957704 +0200
|
||||
@@ -135,7 +135,7 @@
|
||||
#else
|
||||
const size_t page_mask = sysconf(_SC_PAGESIZE) - 1;
|
||||
#endif
|
||||
- size_t stack_size = (std::max(SIGSTKSZ, 65536) + page_mask) & ~page_mask;
|
||||
+ size_t stack_size = (std::max<size_t>(SIGSTKSZ, 65536) + page_mask) & ~page_mask;
|
||||
#if defined(ADDRESS_SANITIZER) || defined(MEMORY_SANITIZER) || \
|
||||
defined(THREAD_SANITIZER)
|
||||
// Account for sanitizer instrumentation requiring additional stack space.
|
||||
diff -aurN qt-everywhere-src-5.15.3_20210826_21ea9c12/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc qt-everywhere-src-5.15.3_20210826_21ea9c12-mod/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
|
||||
--- qt-everywhere-src-5.15.3_20210826_21ea9c12/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc 2021-08-29 05:12:02.000000000 +0200
|
||||
+++ qt-everywhere-src-5.15.3_20210826_21ea9c12-mod/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc 2021-09-25 12:53:59.282947757 +0200
|
||||
@@ -138,7 +138,7 @@
|
||||
// SIGSTKSZ may be too small to prevent the signal handlers from overrunning
|
||||
// the alternative stack. Ensure that the size of the alternative stack is
|
||||
// large enough.
|
||||
- static const unsigned kSigStackSize = std::max(16384, SIGSTKSZ);
|
||||
+ static const unsigned kSigStackSize = std::max<size_t>(16384, SIGSTKSZ);
|
||||
|
||||
// Only set an alternative stack if there isn't already one, or if the current
|
||||
// one is too small.
|
|
@ -1,141 +0,0 @@
|
|||
diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
|
||||
--- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc 2020-11-07 02:22:36.000000000 +0100
|
||||
+++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc 2021-01-20 02:14:53.066223906 +0100
|
||||
@@ -248,6 +248,18 @@
|
||||
return RestrictKillTarget(current_pid, sysno);
|
||||
}
|
||||
|
||||
+#if defined(__NR_newfstatat)
|
||||
+ if (sysno == __NR_newfstatat) {
|
||||
+ return RewriteFstatatSIGSYS();
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+#if defined(__NR_fstatat64)
|
||||
+ if (sysno == __NR_fstatat64) {
|
||||
+ return RewriteFstatatSIGSYS();
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
if (SyscallSets::IsFileSystem(sysno) ||
|
||||
SyscallSets::IsCurrentDirectory(sysno)) {
|
||||
return Error(fs_denied_errno);
|
||||
diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
|
||||
--- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc 2020-11-07 02:22:36.000000000 +0100
|
||||
+++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc 2021-01-22 19:02:55.651668257 +0100
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
#include "sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h"
|
||||
|
||||
+#include <errno.h>
|
||||
+#include <fcntl.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/syscall.h>
|
||||
@@ -353,6 +355,35 @@
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
+intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args,
|
||||
+ void* aux) {
|
||||
+ switch (args.nr) {
|
||||
+#if defined(__NR_newfstatat)
|
||||
+ case __NR_newfstatat:
|
||||
+#endif
|
||||
+#if defined(__NR_fstatat64)
|
||||
+ case __NR_fstatat64:
|
||||
+#endif
|
||||
+#if defined(__NR_newfstatat) || defined(__NR_fstatat64)
|
||||
+ if (*reinterpret_cast<const char *>(args.args[1]) == '\0'
|
||||
+ && args.args[3] == static_cast<uint64_t>(AT_EMPTY_PATH)) {
|
||||
+ return sandbox::sys_fstat64(static_cast<int>(args.args[0]),
|
||||
+ reinterpret_cast<struct stat64 *>(args.args[2]));
|
||||
+ } else {
|
||||
+ errno = EACCES;
|
||||
+ return -1;
|
||||
+ }
|
||||
+ break;
|
||||
+#endif
|
||||
+ }
|
||||
+
|
||||
+ CrashSIGSYS_Handler(args, aux);
|
||||
+
|
||||
+ // Should never be reached.
|
||||
+ RAW_CHECK(false);
|
||||
+ return -ENOSYS;
|
||||
+}
|
||||
+
|
||||
bpf_dsl::ResultExpr CrashSIGSYS() {
|
||||
return bpf_dsl::Trap(CrashSIGSYS_Handler, NULL);
|
||||
}
|
||||
@@ -385,6 +416,10 @@
|
||||
return bpf_dsl::Trap(SIGSYSSchedHandler, NULL);
|
||||
}
|
||||
|
||||
+bpf_dsl::ResultExpr RewriteFstatatSIGSYS() {
|
||||
+ return bpf_dsl::Trap(SIGSYSFstatatHandler, NULL);
|
||||
+}
|
||||
+
|
||||
void AllocateCrashKeys() {
|
||||
#if !defined(OS_NACL_NONSFI)
|
||||
if (seccomp_crash_key)
|
||||
diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h
|
||||
--- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h 2020-11-07 02:22:36.000000000 +0100
|
||||
+++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h 2021-01-20 02:11:04.583714199 +0100
|
||||
@@ -62,6 +62,10 @@
|
||||
// sched_setparam(), sched_setscheduler()
|
||||
SANDBOX_EXPORT intptr_t
|
||||
SIGSYSSchedHandler(const struct arch_seccomp_data& args, void* aux);
|
||||
+// If the fstatat syscall is actually a disguised fstat, calls the regular fstat
|
||||
+// syscall, otherwise, crashes in the same way as CrashSIGSYS_Handler.
|
||||
+SANDBOX_EXPORT intptr_t
|
||||
+ SIGSYSFstatatHandler(const struct arch_seccomp_data& args, void* aux);
|
||||
|
||||
// Variants of the above functions for use with bpf_dsl.
|
||||
SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYS();
|
||||
@@ -72,6 +76,7 @@
|
||||
SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSFutex();
|
||||
SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSPtrace();
|
||||
SANDBOX_EXPORT bpf_dsl::ResultExpr RewriteSchedSIGSYS();
|
||||
+SANDBOX_EXPORT bpf_dsl::ResultExpr RewriteFstatatSIGSYS();
|
||||
|
||||
// Allocates a crash key so that Seccomp information can be recorded.
|
||||
void AllocateCrashKeys();
|
||||
diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc
|
||||
--- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc 2020-11-07 02:22:36.000000000 +0100
|
||||
+++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc 2021-01-20 02:41:12.033133269 +0100
|
||||
@@ -261,4 +261,13 @@
|
||||
|
||||
#endif // defined(MEMORY_SANITIZER)
|
||||
|
||||
+SANDBOX_EXPORT int sys_fstat64(int fd, struct stat64 *buf)
|
||||
+{
|
||||
+#if defined(__NR_fstat64)
|
||||
+ return syscall(__NR_fstat64, fd, buf);
|
||||
+#else
|
||||
+ return syscall(__NR_fstat, fd, buf);
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
} // namespace sandbox
|
||||
diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h
|
||||
--- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h 2020-11-07 02:22:36.000000000 +0100
|
||||
+++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h 2021-01-20 02:40:26.499827829 +0100
|
||||
@@ -17,6 +17,7 @@
|
||||
struct rlimit64;
|
||||
struct cap_hdr;
|
||||
struct cap_data;
|
||||
+struct stat64;
|
||||
|
||||
namespace sandbox {
|
||||
|
||||
@@ -84,6 +85,9 @@
|
||||
const struct sigaction* act,
|
||||
struct sigaction* oldact);
|
||||
|
||||
+// Recent glibc rewrites fstat to fstatat.
|
||||
+SANDBOX_EXPORT int sys_fstat64(int fd, struct stat64 *buf);
|
||||
+
|
||||
} // namespace sandbox
|
||||
|
||||
#endif // SANDBOX_LINUX_SERVICES_SYSCALL_WRAPPERS_H_
|
|
@ -31,7 +31,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
|
||||
PKGNAM=qt5
|
||||
VERSION=$(ls qt-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)
|
||||
BUILD=${BUILD:-3}
|
||||
BUILD=${BUILD:-1}
|
||||
PKGSRC=$(echo $VERSION | cut -d - -f 1)
|
||||
PKGVER=$(echo $VERSION | tr - _)
|
||||
|
||||
|
@ -143,21 +143,6 @@ cd qtbase
|
|||
zcat $CWD/patches/qt5.qtbase_cmake_isystem_includes.patch.gz | patch -p1 --verbose || exit 1
|
||||
cd - 1>/dev/null
|
||||
|
||||
# Fix sandbox functions for glibc-2.33:
|
||||
cd qtwebengine
|
||||
zcat $CWD/patches/qtwebengine-everywhere-src-5.15.2-%231904652.patch.gz | patch -p1 --verbose || exit 1
|
||||
cd - 1>/dev/null
|
||||
|
||||
# Fix for glibc-2.34+:
|
||||
zcat $CWD/patches/qt5-glibc-2.34.patch.gz | patch -p1 --verbose || exit 1
|
||||
|
||||
# Apply upstream patch to move the wayland socket polling to a separate event
|
||||
# thread. This greatly improves the behavior of Plasma Wayland sessions, fixing
|
||||
# (for example) stuttering that was occuring on multimedia applications.
|
||||
cd qtwayland
|
||||
zcat $CWD/patches/24.diff.gz | patch -p1 --verbose || exit 1
|
||||
cd - 1>/dev/null
|
||||
|
||||
# If PulseAudio is not found, use the _alsa $TAG and disable it in the build:
|
||||
if ! pkg-config --exists libpulse 2>/dev/null ; then
|
||||
PULSEAUDIO_OPTION="-no-pulseaudio -no-webengine-pulseaudio"
|
||||
|
|
|
@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
|
||||
PKGNAM=vte
|
||||
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
|
||||
BUILD=${BUILD:-1}
|
||||
BUILD=${BUILD:-2}
|
||||
|
||||
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
|
||||
PKGNAM=dovecot
|
||||
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
|
||||
BUILD=${BUILD:-1}
|
||||
BUILD=${BUILD:-2}
|
||||
|
||||
if [ -z "$ARCH" ]; then
|
||||
case "$( uname -m )" in
|
||||
|
|
|
@ -28,7 +28,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
PKGNAM=php
|
||||
VERSION=${VERSION:-$(echo php-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
|
||||
ALPINE=2.25
|
||||
BUILD=${BUILD:-1}
|
||||
BUILD=${BUILD:-2}
|
||||
|
||||
# Automatically determine the architecture we're building on:
|
||||
if [ -z "$ARCH" ]; then
|
||||
|
|
|
@ -28,7 +28,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
|
||||
PKGNAM=postfix
|
||||
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
|
||||
BUILD=${BUILD:-1}
|
||||
BUILD=${BUILD:-2}
|
||||
|
||||
if [ -z "$ARCH" ]; then
|
||||
case "$( uname -m )" in
|
||||
|
|
|
@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
|
||||
PKGNAM=samba
|
||||
VERSION=${VERSION:-$(echo samba-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
|
||||
BUILD=${BUILD:-1}
|
||||
BUILD=${BUILD:-2}
|
||||
|
||||
if [ -e $CWD/machine.conf ]; then
|
||||
. $CWD/machine.conf ]
|
||||
|
|
|
@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
|
|||
|
||||
PKGNAM=tin
|
||||
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
|
||||
BUILD=${BUILD:-1}
|
||||
BUILD=${BUILD:-2}
|
||||
|
||||
# Automatically determine the architecture we're building on:
|
||||
if [ -z "$ARCH" ]; then
|
||||
|
|
|
@ -34,7 +34,7 @@ PKGNAM=texlive
|
|||
SOURCEVERSION=${SOURCEVERSION:-20210324}
|
||||
TEXMFVERSION=${TEXMFVERSION:-210418}
|
||||
VERSION=${VERSION:-2021.$TEXMFVERSION}
|
||||
BUILD=${BUILD:-2}
|
||||
BUILD=${BUILD:-3}
|
||||
|
||||
TMP=${TMP:-/tmp}
|
||||
PKG=$TMP/package-texlive
|
||||
|
|
Loading…
Reference in a new issue