Ubuntu / Gnome Shell / patch source and recompile

 ( log69 | 2018. december 23., vasárnap - 19:37 )

Sziasztok,

Hogyan tudnám a legegyszerűbben meg-patch-elni az alábbi fájlt?

https://github.com/GNOME/gnome-shell/blob/master/src/shell-recorder.c#L135

A 100-as érték helyett 33 kell.

Rendszer: Ubuntu 18 x64

Véletlenül rátaláltam, hogy tud Screencast record-ot csinálni beépített módon Gnome Shell, lásd:

https://fedoraproject.org/wiki/ScreenCasting#Using_Gnome.27s_embedded_screencast_tool

Ráadásul ezzel nincs is villogás (flicker) amely egyébként minden más felvevő eszköznél jelen van a vsync miatt (legyen az ffmpeg x11grab, osb vagy más). Mivel nem mindig pont repaint-nél veszi ki az Xorg-tól a képkockát, ezért néha a háttér ablakok előre villannak. FFmpeg-et meg nem lehet DE vsync-jére időzíteni (a vsync kapcsolója mást jelent). Van a problémáról fórum bejegyzés több helyen net szerte.

Megoldás rá a vsync kikapcsolása, úgy tökéletes a desktop felvétel. De nem akarom kikapcsolni és nem akarok váltani másik DE-re.

Ezzel a beépített megoldással (Ctrl+Shift+Alt+R) tökéletes a felvétel, csupán egy gond van vele: a pointert csak 100 ms-onként frissíti (kérdezi le Xorg-tól) és így lassan ugrál és nem elég gyors dolgok mutogatásához (10 frame-es lag), és mivel 30 frame-es felvételt akarok, ezt az értéket 33-ra kellene állítani. Minden más megfelelő.

Feltettem még hozzá egy Gnome Shell kiterjesztést is, ami enged további beállításokat a felvétel módjára:

https://extensions.gnome.org/extension/690/easyscreencast/

Tehát a kérdés:

Hogyan tudom ezt a beégetett paramétert megváltoztatni a legkönnyebben a rendszeremen? Elég lehet csak egy részét újrafordítani? Az alábbi fájlban található:

cd /usr/lib/gnome-shell
grep -ir UPDATE_POINTER_TIME

Binary file libgnome-shell.so matches

Szóval libgnome-shell.so fájlt kellene újrafordítani szerintem, de nem találom hogy hol van ennek a devel csomagja:

apt-file search libgnome-shell.so
gnome-shell: /usr/lib/gnome-shell/libgnome-shell.so

Ötlet valakinek?
Kösz.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Nem devel csomag kell neked, hanem forrás (=source):

# ez letölti a forrást és kicsomagolja egy könyvtárba, kellhetnek deb-src sorok a sources.list be hozzá és apt-get update
$ apt-get source gnome-shell
# bemész a source dir-be megszerkeszted ami kell, azután újrabuildhez
$ apt-get build-dep gnome-shell # ez telepíti neked az összes szükséges csomagot az újrafordításhoz
$ dpkg-buildpackage -rfakeroot -b # ez csinál neked csomagot, a forrás könyvtárban legyél
# erre figyelj, lehet nem mindegyik .deb kell neked, és már települ is ;-)
$ dpkg -i ../*.deb

dióhéjban ennyi ;-)

Köszi ez hasznos.

Nagy nehezen rátaláltam az alábbi infóra és végül ezzel oldottam meg az eredeti problémát:

disable tripple buffering for gnome shell:

edit /etc/X11/xorg.conf.d/20-intel.conf
Option "SwapbuffersWait" "false"

Miután az xorg.conf így néz ki:

Section "Device"
  Identifier "Intel Graphics"
  Driver "intel"
  Option "SwapbuffersWait" "false"
EndSection

Ezzel 3 dolog oldódott meg. Egyrészt megmaradt a rendszer alatt a vsync, másrészt nincs flicker ha ffmpeg-gel veszek fel x11grab forrásból desktop videót. És ez jó mert ffmpeg nagyon gyors és nincs frame drop sem, mint Gnome beépített record-jánál.