LINUX.ORG.RU

Сообщения Andrew-R

 

Проект mesa3d перешёл на сборочную систему meson

autotools убрали, в 19.1 не будет.

https://cgit.freedesktop.org/mesa/mesa/commit/?id=95aefc94a941701616fda0776a3...

Пришлось учить meson. Т.е. копипастить строку настроек, любезно предоставленную одним тестером:

https://lists.freedesktop.org/archives/mesa-dev/2019-April/217409.html

Сначала нужно создать директорию, где будет собираться проект, я создал BUILD в корне исходников mesa и перешёл туда.

Внимание, по-умолчанию если у вас есть ccache он будет использован, у меня чуть место в $HOME не кончилось.

Я скопипастил такое (префикс мой особенный, у остальных куда-то в /usr):

meson ../ --prefix=/usr/X11R7 --strip --buildtype debugoptimized -Degl=true -Ddri-drivers=r100,r200,i965,nouveau -Dplatforms=drm,x11 -Dgallium-drivers=i915,r600,radeonsi,swrast,virgl,nouveau,r300 -Dvulkan-drivers=amd,intel  -Dgallium-nine=true -Dgallium-opencl=icd -Dgallium-va=true -Dgallium-xvmc=true --reconfigure 
ninja

От рута: ninja install

Andrew-R
()

В MAME добавили поддержку SGI (устанавливают IRIX 5.3)

https://forums.bannister.org/ubbthreads.php?ubb=showflat&Number=44666&amp...

https://forums.bannister.org/ubbthreads.php?ubb=showflat&Number=114749#Po...
В news для MAME 0.207 есть

MAME 0.207
27 Feb 2019

With the latest improvements to the MIPS R4000 CPU, WD33C93 SCSI and SGI Newport graphics emulation, it’s possible to install and run IRIX in MAME. This is a milestone achievement, and wouldn’t have been possible without some amazing dedication and collaboration on the part of the contributors and team members involved.

Судя по коду, 24-битной графики пока нет, есть 8-битная :} Сам пока не пробовал, поэтому в толксы.

Andrew-R
()

Автовекторизация в gcc (ia32)

Что-то меня скорость работы плагинов Cinelerra-GG не устраивала (6-7 фпс для color3way на одной дорожке 1280*720!), и я решил поглядеть, что мне может дать автовекторизация (так по ядрам Cin и так умеет раскидывать работу плагинов).

Покурил доки
https://locklessinc.com/articles/vectorize/

http://gcc.gnu.org/projects/tree-ssa/vectorization.html

врубил "-O3 -march=native -mtune native" вместо "-O2 -march=i486 -mtune=i686" (дефолт слакбилда, который я юзал). Скорость поднялась до 9 фпс, но векторных инструкций почти не было..

Проверял через скрипт, который нашёл тут

https://superuser.com/questions/726395/how-to-check-if-a-binary-requires-sse4...

https://pastebin.com/A8bAuHAP (почему-то концы строк он мне сделал виндовые! поменял через меню в kwrite, иначе не работало)

objdump -M intel -d /dev/shm/tmp/cinelerra-goodguy-20190211/cinelerra-5.1/plugins/color3way/i686/color3way.o | ./opcodes.sh -s SSE2 -s SSE3 -s SSE -s AVX -s FMA | less

ладно, не работает ... Но если добавить -fast-math так что флаги в global_config стали
CFLAGS_ := -O3 -ffast-math -ftree-vectorizer-verbose=2 -march=native -mtune=native -D__STDC_CONSTANT_MACROS

то скорость плагина возросла до 15 фпс, а в ассемблерном выхлопе появились всякие vmovss и прочие....

Так вроде работает, но математически я его корректность не проверял ...

https://git.cinelerra-gg.org/git/?p=goodguy/cinelerra.git;a=blob;f=cinelerra-...

gcc --version gcc (GCC) 5.5.0

cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 21
model           : 2
model name      : AMD FX(tm)-4300 Quad-Core Processor
stepping        : 0
microcode       : 0x6000852
cpu MHz         : 1399.998
cache size      : 2048 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 2
apicid          : 16
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 popcnt aes xsave avx f16c lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs xop skinit wdt lwp fma4 tce nodeid_msr tbm topoext perfctr_core perfctr_nb cpb hw_pstate ssbd vmmcall bmi1 arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold
bugs            : fxsave_leak sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass
bogomips        : 7599.98
TLB size        : 1536 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 48 bits physical, 48 bits virtual
power management: ts ttp tm 100mhzsteps hwpstate cpb eff_freq_ro

Интересно, на 64-битной сборке прирост будет ли? Потом может быть проверю.

Ещё может кому ресурс пригодится (eng) https://www.agner.org/optimize/

Andrew-R
()

В NetBSD добавили поддержку аппаратной виртуализации на новых процах Intel

 

http://blog.netbsd.org/tnf/entry/the_hardware_assisted_virtualization_challenge

На основе интеловского HAXМ. Поддерживает до 8 виртуальных машин, мультипроцессорность для гостевых ОС.

На скриншотах NetBSD, Arch, Win 7 (8.1 и новее в разработке - ошибся-с) (Android x86 и FreeBSD подвисают).

Патчи едут в qemu и где там есть апстрим этого HAXM-а.

На АМД есть какая-та другая ининциатива (NetBSD Virtual Machine Monitor).

В общем вот, два года (серьёзно) пилилось.

Andrew-R
()

Скрипты для 64-bit chroot, внутри Slackware 14.2, снаружи тоже Слакварь, но 32-bit

 

В общем ничего нового, в интернетах всё это есть, но не совсем то, что мне нужно.

У меня в seamonkey (2.49.4) не работает одна игрушка, хочет всякие webassembly . В firefox-60esr из слаквари 14.2 -64 bit всё работает, но в виртуалку грузится долго, да и virtio-gpu я там так и не завёл нормально (пока-что).

Выход - монтировать raw-раздел с виртуалкой в каталог, и делать туда chroot.

cat ~/create_chroot.sh
#! /bin/bash

echo "using /mnt/sdb1/HDD-images/20gb-slackware.img"
losetup -P /dev/loop0 /mnt/sdb1/HDD-images/20gb-slackware.img
mount /dev/loop0p1 /mnt/zip
mount -obind /dev /mnt/zip/dev
mount -obind /proc /mnt/zip/proc
mount -obind /sys /mnt/zip/sys
mount -obind /dev/shm  /mnt/zip/dev/shm
xhost +local:
echo "done!"
cat ~/unmount_chroot.sh
#! /bin/bash

umount /mnt/zip/proc
umount /mnt/zip/sys
umount /mnt/zip/dev/shm
kill -9 `lsof -t /mnt/zip`
umount /mnt/zip/dev
umount /mnt/zip
losetup -d /dev/loop0
cat ~/ff60_64.sh
#! /bin/bash

chroot /mnt/zip su -c /apulse_firefox guest
cat /mnt/zip/apulse_firefox
#! /bin/sh
apulse firefox 

Зачем так сложно? Ну, pulseaudio хочет dbus, а у меня на хосте он старый. В общем работает, хотя unmount_chroot.sh приходится вызывать дважды - наверное после kill-а нужной wait вставить ....

Звук и аппаратное 3д работают (nouveau и там и тут), suspend-to-ram переживает.

Andrew-R
()

Nouveau nvc0 testing request

 

Сижу я тут, рассылку читаю. И натыкаюсь на такую серию:
https://lists.freedesktop.org/archives/mesa-dev/2018-December/211207.html

-----
[Mesa-dev] [PATCH 0/7] Multi Context fixes for Nouveau

В общем в теории (и у разработчика) эта серия фиксит краши в :
chromium (браузер)
qtwebengine (браузерный движок в qt)
dolphin (эмулятор)
Warsow (игрушка)

Что желательно потестить:
Видеоплееры (которые используют аппаратное ускорение vdpau + Opengl, например mpv, vlc, kodi как я понимаю / помню.)
Другие приложения, которые крашились раньше из-за этого бага (например кмайл из кде5 ?)

nvc0 - это всякие карточки с OpenGL 4.x (у меня gf 8800 gs - поколением младше, где только OGL 3.3 аппаратно. Для неё пока фиксов нет, Карол хочет сначала на более распространённых карточках потестить, а то вдруг переписывать всё придётся)

edit: git repo (might be force-pushed from time to time): https://github.com/karolherbst/mesa/commits/mt_fixes_take2

Andrew-R
()

Я тут обещал свой ремикс Slax/slackware выложить ...

Сначала думал воспользоваться помощью друга (у которого 100 Гб подключено), а потом вспомнил, что вроде расшаривал разок через торрент образ на 10 Гб. Вот, решил повторить .... Образ лучше запускать на виртуалке, для начала. Он НЕ гибридный, но скопировать на флэшку содержимое и поставить свой загрузчик можно.

https://yadi.sk/d/toG8-WgzVJgg2Q

sha256sum /mnt/sdb1/slax-29-11-2018-test0.iso
d9ae68414b5c9f7577241e698da1943d1812dcbd4e3cbd9c4887a673487b4365  /mnt/sdb1/slax-29-11-2018-test0.iso

пускай полежит до выходных, потом обновлю ...

Пароль root/toor, guest/guest

Andrew-R
()

Новый сайт Cinelerra-GG

 

https://www.cinelerra-gg.org/downloads/

В основном как я понял сохранился прежний порядок релизов в конце месяца ... Да, русский переводчик сказал, что (пока?) обновлять переводы не будет. Те что есть впрочем работают ....

Из того, что можно назвать заметными багфиксами - titler теперь должен кушать неограниченное число символов, раньше был лимит в 3 с небольшим тысячи знаков. Также убран лимит с кол-ва динамических ключевых кадров. Появился новый плагин для рисования поверх видео. ffmpeg обновили до 4.1

Andrew-R
()

nufraw 0.42 + gimp 2.10-9 (-git)

 , nufraw,

Вот, скомпилял ветку gimp-2.10 (поверх новых babl + gegl тоже из git). Для сборки по крайней мере gegl + gimp нужен уже хотя g++/C поновее, чем у меня были в gcc 4.8/gcc 4.9 — пришлось собирать с помощью clang 7 (который из пакета llvm, который нужен для mesa).

В общем после утаскивания кучи пакетов в сырцах от slackware-current и их сборки (там сейчас *.la файлы убили, а у меня они частично ещё используются — было весело, особенно с двумя libpng: 1.4 и 1.6) наконец-то получилось почти как надо. Собрал ещё nufraw (https://sourceforge.net/p/nufraw/blog/), теперь открывает разные raw и даже в 16-бит на канал. Но при этом автоопределение svg отвалилось, и если выбрать опцию сохранять exif в tiff — то полученный файл как бы имеет две страницы, но открыть можно только первую (по крайней мере в самом Гимпе), вторая судя по всему — метаданные.

Но в целом работает шустро, даже для 32-битного варианта, особенно если дать использовать 3 Гб памяти (максимум на 32-битной платформе).

Andrew-R
()

slackware -current , linuxdoc-tools.slackbuild оказался не очень безопасным.

Там даже проблема не в самом slackbuild'e, а в дополнительном скрипте trackbuild.linuxdoc-tools

######## WARNING ###################################################
# This will touch nearly every file on your expendable development
# box.  You wouldn't try this on a production system, right?
######## WARNING ###################################################

# This the faster option, but not the safest.  On a full Slackware
# installation, you'll find new files in this directory which have
# been 'touch'ed.  The --touch-filesystem-first will not do this,
# but is slower.  However, if you really want extra speed, copy
# this entire package source directory to a temporary location
# and run it from there.
# TFS="--touch-filesystem-faster"

TFS="--touch-filesystem-first"

# Launch the build script:
slacktrack $TFS \
   --notidy \
   --showdeps \
   --run-after-withlog $CWD/postbuildfixes.sh \
   -T $TMP \
   -l $CWD/build.$ARCH.log \
   -b $PKGSTORE \
   -rYQOcp $PKGNAM-$PKGVERSION-$ARCH-$BUILD.$PKGEXT ./linuxdoc-tools.build

вот оно мне и растоптало всю систему ....время у файлов в /bin, /sbin, /etc, /usr слетело....

Хорошая шутка .....

Andrew-R
()

Библиотека libexiv2 0.27 перешла на сборку с Cmake и слегка поменяла API

https://github.com/Exiv2/exiv2 Bump Version to 0.27.0.3

В общем обновился до последней версии exiv2 а там ... пришлось править слакбилд и пару приложений: nufraw и geeqie

кусок слакбилда:

# ./configure \
#  --prefix=/usr \
#  --libdir=/usr/lib${LIBDIRSUFFIX} \
#  --sysconfdir=/etc \
#  --localstatedir=/var \
#  --mandir=/usr/man \
#  --enable-shared=yes \
#  --enable-static=no \
#  --enable-xmp \
#  --enable-video \
#  --enable-webready \
#  --without-ssh \
#  --build=$ARCH-slackware-linux || exit 1

cmake \
  -DCMAKE_INSTALL_PREFIX=/usr \
  -DCMAKE_INSTALL_MANDIR=/usr/man \
  -DBUILD_SHARED_LIBS=ON \
  -DEXIV2_ENABLE_VIDEO=ON \
    . || exit 1

nufraw 0.42

--- nufraw_exiv2.cc.orig        2016-09-05 17:24:50.000000000 +0300
+++ nufraw_exiv2.cc     2018-12-01 06:47:43.196751993 +0300
@@ -67,7 +67,7 @@
         if (exifData.empty()) {
             std::string error(uf->filename);
             error += ": No Exif data found in the file";
-            throw Exiv2::Error(1, error);
+            throw Exiv2::Error(Exiv2::kerErrorMessage, error);
         }

         /* List of tag names taken from exiv2's printSummary() in actions.cpp */

geeqie git 969791e9521aeffd61d67b3c2d17ccbff98f00d6

diff --git a/src/exiv2.cc b/src/exiv2.cc
index b3c80657..159992ca 100644
--- a/src/exiv2.cc
+++ b/src/exiv2.cc
@@ -24,6 +24,7 @@

 #include <exiv2/image.hpp>
 #include <exiv2/exif.hpp>
+#include <exiv2/exiv2.hpp>
 #include <iostream>
 #include <string>

@@ -374,7 +375,7 @@ public:
 #endif
                        Exiv2::Image *image = imageData_->image();

-                       if (!image) throw Exiv2::Error(21);
+                       if (!image) throw Exiv2::Error(Exiv2::kerGeneralError, 21);
                        image->setExifData(exifData_);
                        image->setIptcData(iptcData_);
 #if EXIV2_TEST_VERSION(0,16,0)
@@ -449,6 +450,8 @@ extern "C" {


 void exif_init(void)
+
+#define EXV_PACKAGE "exiv2"
 {
 #ifdef EXV_ENABLE_NLS
        bind_textdomain_codeset (EXV_PACKAGE, "UTF-8");

Пачти вроде разработчикам отправил, хоть это и хаки (без проверки версии).

Andrew-R
()

Previous, эмулятор рабочих станций NeXT

 

Решил вот собрать из git. (https://github.com/svn2github/Previous). Собралось (rev 916), поехало (для сборки нужен libSDL2, CMake), РОМы для трёх видов рабочих станций в комплекте.

Распаковал образ с https://winworldpc.com/product/nextstep/1x , указал в настройках грузиться со скази-винта, выбрал РОМ для эмулируемой машины - и вперёд. Звук работает, цветной вариант рабочей станции - тоже (для него брал NeXT OS 3.3), для корректного выключения нажать f10 (эмуляция нажатия кнопки питания). Внутри есть cc от GNU . С сетью пока не разобрался, но говорят она работает.

Форум: http://www.nextcomputers.org/forums/viewforum.php?f=22&sid=dd8c88c47aba48... (откуда я собственно об эмуле и узнал)

Andrew-R
()

Кажется, я нашёл баг в dmix.

 ,

https://bugzilla.kernel.org/show_bug.cgi?id=200013

Кто-нибудь может на чистой АЛСА попробовать одновременно xmms и mplayer запустить? У меня начиная с alsa-lib 1.1.2 видео через секунд 400-500-600 начинает тормозить (!). Пока пробую разные варианты, которые мне Такаши (разработчик) кидает.

Andrew-R
()

Если у вас плохо работает qemu 2.12 с -M q35

..то его желательно запатчить. Там были два как минимум бага - один - с подвисанием эмулируемого SATA контроллера, и второй - с новой дефолтной сетевухой.

http://lists.nongnu.org/archive/html/qemu-devel/2018-05/msg07141.html («Re: [Qemu-devel] [Qemu-block] [PATCH 2/3] ahci: fix PxCI register race»)

http://lists.nongnu.org/archive/html/qemu-devel/2018-05/msg04852.html («Re: [Qemu-devel] [PATCH] e1000e: Do not auto-clear ICR bits which aren't set in EIAC»)

Я вроде как запатчил, теперь какой-нибудь kde neon live dvd работает.

Перемещено leave из talks

Andrew-R
()

У кого-нибудь есть Blu Ray проигрыватель?

Аппаратный ....

А Линукс тут при том, что я решил посмотреть как Cinelerra-GG делает BD рендер. Делает, если немного скрипт записи поправить. Правда, у меня в качестве теста использовался ~100 Мб клип (после кодирования Cin получился m2ts с h264/ac3 внутри), на минуту всего.

Обновил udftools отсюда, https://github.com/pali/udftools и получил неправильную работу скрипта, он создал udffs с размером блока в 512 байт, а было нужно в 2048. Это исправилось ключиком, пока Синелерра кодила, я ей скрипт подправил:

 #!/bin/bash -ex
PATH=$PATH:/usr/lib/cin
mkdir -p $1/udfs
sz=`du -cb $1/bd.m2ts* | tail -1 | sed -e 's/[  ].*//'`
blks=$((sz/2048 + 4096))
rm -f $1/bd.udfs
mkudffs -b 2048 $1/bd.udfs $blks
mount -t udf -o loop $1/bd.udfs $1/udfs
bdwrite $1/udfs $1/bd.m2ts*
umount $1/udfs
echo To burn bluray, load writable media and run:
echo for WORM: growisofs -dvd-compat -Z /dev/bd=$1/bd.udfs
echo for RW:   dd if=$1/bd.udfs of=/dev/bd bs=2048000
kill $$

Да, оно прибивает себя в конце процесса.

В общем у меня два вопроса: Что будет, если такой udfs образ записать на DVD? А на BD-R? Его аппаратные плееры разной степени древности съедят?

Кто может проверить?

Andrew-R
()

CA0132 в linux (Sound Blaster Z) - 2018

почему-то не могу добавить сообщение в старую тему CA0132 в linux

Смотрел LKML, там вроде патчи под эту карту проскакивают, утверждается что _теперь_ работают все входы-выходы и эффектами можно рулить.

https://lkml.org/lkml/2018/5/8/716

From  Connor McAdams <>
  Subject  [PATCH v5 00/13] ALSA: hda/ca0132: Patch Series for Recon3Di and Sound Blaster Z Support
  Date  Tue, 8 May 2018 13:20:00 -0400
  This patchset adds support for the Sound Blaster Z and the Recon3Di.
Andrew-R
()

Slackware, ncurses6, mc

 

Обновил я на свою голову ncurses. Почему-то получившийся файлик /terminfo/l/linux оказался кривоват для mc (midnight commander) в не-UTF8 консоли. А вот linux-vt в качестве TERM всё обратно исправил .... целый день бился :/

Andrew-R
()

PCem v13 под вине, внутри - старая версия Slax

 

Итак, вышел свежий PCem, мне его было лень компилять , и я его скачал в виде виндового zip с экзешником внутри. Хорошо, что экзешник оказался 32-битный.

Настроил вроде, но там какой-то баг с оверлеем, если выбрать s3virge в качестве видяшки.

Биосы брал тут: https://sites.google.com/site/zretrofiles/pliki/PCemV11Win.zip

https://pcem-emulator.co.uk/ - сайт эмулятора.

Сайт линукса, который внутри (пересобран): http://ftp.linux.cz/pub/linux/slax/SLAX-2.x/

Звук ставить sb -16, внутри - modprobe sb

Cеть только одна - ISA-шная ne2000 - запускать modprobe ne io=0x300

Для видео отредактировать XFree86config, заменить vesa на s3virge.

С инета качает на 85 кб/c - не так уж и плохо, раз в 20 быстрее модема для телефонных линий!

Но voodoo почему-то не подхватывается fb драйвером, может эмуляция некомплектная, может в 2.4.37.11 именно этот драйвер (sstfb) сломан ....

Es1370/sb 128 pci видна, но не звучит - виснет ....Поэтому и поставил sb16. Если поставить pentium (не MMX) - при попытке воспользоваться оверлеем mplayer падает. Но это скорее баг древнего mplayer-а.

Разумеется, лучшее применение подобному эмулю - куда более старые машинки, от 386-го и ниже (который qemu не умеет). Ну или вин9x+voodoo игрушки.

Сайт всяких старых видеокарточек: http://www.vgamuseum.info/index.php/cards/item/94-ati-mach64-vt2 (но вот именно эта карточка в именно этом лин что-то не взлетает)

Andrew-R
()

Adventures in open-source world

Итак, решил я поправить старый баг в kdemultimedia, который меня давно добивал:

https://bugs.kde.org/show_bug.cgi?id=162248 (complete freeze of artsd at video playback) http://bugs.pearsoncomputing.net/show_bug.cgi?id=1905

фикс был простой, но в лоб не накладывался. https://git.trinitydesktop.org/cgit/tdemultimedia/commit/xine_artsplugin/xine...

пока ковырялся с ручным наложением патча, решил пересобрать xine-lib 1.1.21 под свой ffmpeg 2.8. Ну, так оно и собралось...

Во-первых оказалось что в новых binutils (>2.26) поломали линкинг, для старых (типа моего 4.9) gcc. https://forums.gentoo.org/viewtopic-t-1062042-highlight-xinelib.html

Не проблема, берём линкер gold и .... и натыкаемся на баг в libtools: https://github.com/frida/frida/blob/master/releng/patches/libtool-fixes.patch

Пересобрав libtool идём пересобирать xine-lib:

 cat ffmpeg_2.8.patch
--- src/combined/ffmpeg/ff_audio_decoder.c.orig 2012-01-18 23:30:08.000000000 +0400
+++ src/combined/ffmpeg/ff_audio_decoder.c      2017-12-05 07:22:36.095469666 +0300
@@ -46,6 +46,7 @@
 #include "ffmpeg_compat.h"

 #define AUDIOBUFSIZE (64 * 1024)
+#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio

 typedef struct {
   audio_decoder_class_t   decoder_class;
--- src/combined/ffmpeg/ff_video_decoder.c.orig 2012-06-08 17:36:36.000000000 +0400
+++ src/combined/ffmpeg/ff_video_decoder.c      2017-12-05 07:18:13.939466460 +0300
@@ -1055,7 +1055,7 @@
         this->bih.biWidth  = _X_BE_16(&this->buf[12]);
         this->bih.biHeight = _X_BE_16(&this->buf[14]);

-        this->context->sub_id = _X_BE_32(&this->buf[30]);
+    /*    this->context->sub_id = _X_BE_32(&this->buf[30]); */

         this->context->slice_offset = calloc(SLICE_OFFSET_SIZE, sizeof(int));
         this->slice_offset_size = SLICE_OFFSET_SIZE;
--- src/combined/ffmpeg/ffmpeg_decoder.h.orig   2012-01-18 23:30:08.000000000 +0400
+++ src/combined/ffmpeg/ffmpeg_decoder.h        2017-12-05 07:15:36.679464537 +0300
@@ -35,7 +35,7 @@

 typedef struct ff_codec_s {
   uint32_t          type;
-  enum CodecID      id;
+  enum AVCodecID      id;
   const char       *name;
 } ff_codec_t;


cat xcb_1.12.patch
--- configure.ac.orig   2012-06-09 20:40:10.000000000 +0400
+++ configure.ac        2017-12-05 10:40:15.659614712 +0300
@@ -911,7 +911,7 @@
 AC_ARG_WITH([xcb], AS_HELP_STRING([--without-xcb], [Doesn't build XCB video out plugins]))

 if test "x$with_xcb" != "xno"; then
-  PKG_CHECK_MODULES([XCB], [xcb-shape >= 1.0], [have_xcb="yes"], [have_xcb="no"])
+  PKG_CHECK_MODULES([XCB], [xcb xcb-shape >= 1.0], [have_xcb="yes"], [have_xcb="no"])
 fi

 AC_SUBST(XCB_CFLAGS)
--- src/video_out/Makefile.am.orig      2011-12-22 03:24:04.000000000 +0400
+++ src/video_out/Makefile.am   2017-12-05 10:42:03.315616029 +0300
@@ -117,7 +117,7 @@
 xineplug_vo_out_xcbshm_la_CFLAGS = $(VISIBILITY_FLAG) $(MLIB_CFLAGS) $(XCB_CFLAGS) $(XCBSHM_CFLAGS) -fno-strict-aliasing

 xineplug_vo_out_xcbxv_la_SOURCES = deinterlace.c video_out_xcbxv.c $(XCBOSD)
-xineplug_vo_out_xcbxv_la_LIBADD = $(XINE_LIB) $(PTHREAD_LIBS) $(LTLIBINTL) $(XCBXV_LIBS) $(XCB_LIBS)
+xineplug_vo_out_xcbxv_la_LIBADD = $(XINE_LIB) $(PTHREAD_LIBS) $(LTLIBINTL) $(XCBXV_LIBS) $(XCB_LIBS) $(XCBSHM_LIBS)
 xineplug_vo_out_xcbxv_la_CFLAGS = $(VISIBILITY_FLAG) $(XCB_CFLAGS) $(XCBXV_CFLAGS) -fno-strict-aliasing

 xineplug_vo_out_xshm_la_SOURCES = video_out_xshm.c $(X11OSD)

потом соотв. накладываем патч на kdemultimedia.

cat ~/botva/src/kdemultimedia-3.5.10/new_threading_fix.patch
--- kdemultimedia-3.5.10/xine_artsplugin/xinePlayObject_impl.cpp.orig   2017-12-05 11:44:47.783662069 +0300
+++ kdemultimedia-3.5.10/xine_artsplugin/xinePlayObject_impl.cpp        2017-12-05 11:53:47.191668666 +0300
@@ -683,9 +683,15 @@
     XFlush( display );
 }

+// FIXME
+// Due to somewhat recent changes in XLib threading this had to be changed to a polling routine
+// Specifically XNextEvent acquires a global XLib lock, preventing any other XLib methods (including those used in the Xine library) from executing
+// Seems this is a known problem in other projects as well, with the only real option being a rewrite to use xcb natively (not sure if that is even possible here):
+// http://mail-archives.apache.org/mod_mbox/harmony-dev/200905.mbox/%3C200905181317.n4IDHtGQ002008@d06av03.portsmouth.uk.ibm.com%3E
+
 void xinePlayObject_impl::eventLoop()
 {
-    XEvent event;
+/*    XEvent event;

     do
     {
@@ -720,10 +726,50 @@
            }
            pthread_mutex_unlock( &mutex );
        }
-    }
-    while (event.type != ClientMessage ||
-          event.xclient.message_type != xcomAtomQuit ||
-          event.xclient.window != xcomWindow);
+    } */
+
+       XEvent event;
+       bool eventReceived = false;
+
+       do {
+               if (XPending( display )) {
+                       XNextEvent( display, &event );
+                       eventReceived = true;
+
+                       if (event.type == Expose && event.xexpose.count == 0 && event.xexpose.window == visual.d) {
+                               pthread_mutex_lock( &mutex );
+
+                               if (stream != 0) {
+                                       xine_port_send_gui_data( vo_port,
+                                                       XINE_GUI_SEND_EXPOSE_EVENT,
+                                                       &event );
+                               }
+                               else {
+                                       clearWindow();
+                               }
+                               pthread_mutex_unlock( &mutex );
+                       }
+                       else if (event.type == shmCompletionType) {
+                               pthread_mutex_lock( &mutex );
+
+                               if (stream != 0) {
+                                       xine_port_send_gui_data( vo_port,
+                                                       XINE_GUI_SEND_COMPLETION_EVENT,
+                                                       &event );
+                               }
+                               pthread_mutex_unlock( &mutex );
+                       }
+               }
+               else {
+                       usleep(50000);
+                       eventReceived = false;
+               }
+       }
+       while (!eventReceived ||
+               event.type != ClientMessage ||
+               event.xclient.message_type != xcomAtomQuit ||
+               event.xclient.window != xcomWindow);
+
 }

 void xineVideoPlayObject_impl::x11WindowId( long window )

А прикол в том, что если собрать xine-lib без поддержки xcb, то kaffeine вылетает с ошибкой инциализации видеодрайверов! В общем и kaffeine (0.8.8) я тоже пересобрал ....

Так что увы нельзя не согласиться с мнением из gcc багзиллы: такие мелкие подставочки на каждом шагу не способствуют .....

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65248

Nix 2016-06-18 18:50:55 UTC Thirded. At the very least there should be a huge note in binutils NEWS about this. A subtle, unadvertised incompatibility of a new binutils with a not-very-old GCC is the sort of horror show that gives free software a bad name. At the very least make more noise about it.

Andrew-R
()

Кто такие «хорошие люди» и как их делать

Тема периодически всплывает, и тонет в упрощении. Наверное, хорошие люди, это которые стараются не делать другим плохо, в кратко-, средне- и долгосрочной перспективе. И весь их разум направлен на такую вот цель. Соотв., в обществе подобных..существ взаимопомощь вполне работает, а не как сейчас - ты делаешь кому-то хорошо, потом ещё кому-то, потом ещё кому-то..а в ответ ..хорошо если тишина. Но как таких людей делать? В реале наверное два основных фактора играют роль - отсутствие силы воли (признать свои ошибки, указать на ошибку друга...и остаться при этом друзьями, но исправив ошибку) это раз, а два...давление среды (или внутренее) которое никакой силой воли не поправить. наверное, именно из-за второго один современный писатель рекомендовал за попытку создания такой структуры подавления - ВМГС ((анти)утопии про Меганезию). С первым фактором ещё кажется можно что-то поделать..но..это требует неожиданно неожиданного упорства на протяжении ..ну как минимум пока дети вырастут (лет 15, не меньше). Причём во многих областях жизни, а не только в 1-2-х. Ну и вообще по большей части не понятно, что такое хорошо. Ещё недавно под «хорошо» понимали нечто, что я сейчас иначе чем махровым антропоцентризмом и назвать не могу. Так что моральный (? может лучше эмпатический или как-то так) прогресс по ходу необходим, как и реальная широта (х глубина) мышления. Причем с этическим (добрым) уклоном, когда этика боолее важна, чем скорость результата. Без внутренней честности ничего не получится, а у нас похоже умеют только выдрессировывать внешние признаки. Хорошие книги-мультики-фильмы это хорошо, но если вокруг - пц, нисколько не похожий на то, как должны жить люди - все это не поможет. Не думаю, что на ЛОРе кто-то любит задумываться поглубже на такие темы - но пусть будет ..в толксах.

Вот пара ссылок, из относительно недавнего:

https://theanarchistlibrary.org/library/the-anarchist-faq-editorial-collectiv...

http://rethinking-our-reality.blogspot.ru/2014/03/mobilizing-green-imaginatio...

http://www.derrickjensen.org/endgame/

(это разные люди писали, если что). К вопросу о нужности глобальных сетей...в ру-интернете о некоторых проблемах и поговорить особо не с кем - у нас о таком и на таком уровне не думают, то времени нет, то книги на английском, то в какую-нибудь ловушку воображения всем городом попали.....

Andrew-R
()