ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π²ΡΠΏΡΡΠΊ ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° xfwm4 4.14.3, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ Xfce Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠΊΠΎΠ½ Π½Π° ΡΠΊΡΠ°Π½Π΅, Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΊΠΎΠ½ ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ, Π·Π°ΠΊΡΡΡΠΈΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΡ
ΡΠ°Π·ΠΌΠ΅ΡΠ°.
Π Π½ΠΎΠ²ΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° X11-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ XRes (X-Resource), ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ° Ρ X-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ PID ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΠ² sandbox-ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° XRes ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π²ΠΈΡΡΠΈΡ
ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², PID ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ _NET_WM_PID, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π²Π½ΡΡΡΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΡΠ½.
Π Π½ΠΎΠ²ΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΡΠ°Π½Π΅Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠΆΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄ΡΠ½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ (use-after-free) ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π΄Π°Π½Π½ΡΡ
Π²Π½Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΡΡΠΎΠΊ Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² xfwm4 4.14.3 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ XError, ΡΠΏΡΠΎΡΠ°ΡΡΠΈΠ΅ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ XConfigureWindow.
Π£ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 4.14.3 ΡΡΠ°Π»ΠΈ Π½Π°Π±Π»ΡΠ΄Π°ΡΡΡΡ ΠΊΡΠ°Ρ
ΠΈ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π·Π°ΠΏΡΡΠΊΠ° Π²ΠΎ FreeBSD, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ ΡΡΠ΄Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠ·-Π·Π° Π½ΠΎΠ²ΠΎΠΉ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ libXres. Π’Π°ΠΊΠΆΠ΅ Π² xfwm4 Π²ΡΠΏΠ»ΡΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡ AMD ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ X11-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ XPresent Π΄Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄Π° Ρ ΠΊΠ°Π΄ΡΠΎΠ²ΡΠΌ Π³Π°ΡΡΡΠΈΠΌ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠΌ (vblank). XPresent Π²ΠΊΠ»ΡΡΠ°Π»ΡΡ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ ΠΊΠ°ΡΡΡ ΠΌΠ°ΡΠΊΠΈ AMD, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ°ΡΡΡ ΠΈΠΌΠ΅Π½ΡΡΡΡΡ «Radeon» Π±Π΅Π· ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ ΡΠ»ΠΎΠ²Π° «AMD» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, «Radeon RX 570»). ΠΠ»Ρ Π΄Π°Π½Π½ΡΡ
ΠΊΠ°ΡΡ Π²ΠΊΠ»ΡΡΠ°Π»ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ vblank Π½Π° Π±Π°Π·Π΅ «glx», ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ ΠΎΡΡΡΠ°ΡΡ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ glx Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ 4K Π²ΠΈΠ΄Π΅ΠΎ Π² mpv Π½Π°Π³ΡΡΠΆΠ°Π΅Ρ GPU Π½Π° 70% Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΈ 50% Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π½Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ XPresent ΡΠ½ΠΈΠΆΠ°Π΅ΡΡΡ Π΄ΠΎ 50% ΠΈ 30% ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠ½Π΅ΡΠ³ΠΎΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠΊΠ° ΠΎΡΡΠ°ΡΡΡΡ Π½Π΅ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ. ΠΠ»Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ XPresent ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ /general/vblank_mode Π² xfconf:
xfconf-query -c xfwm4 -p /general/vblank_mode -t string -s «xpresent» —create
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru