LINUX.ORG.RU

Сокеты или сигналы для завершения mplayer -slave в GTK+ окошке

 , ,


0

1

mplayer -slave -really-quiet -noconsolecontrols -nomouseinput -nocache -vf scale=1366:768:0:0 -wid %d FILENAME - так я его запускаю, отрисовывая в GTK контейнере, а вот как завершить без неправильного system(«killall mplayer»); X 2 не понимаю. К примеру, я загоняю список файлов, которые по сигналу от нажатия клавиши поочередно должны показываться в окошке проигрывателя, причем нужно как раз завершить процесс mplayer'а, ну а потом снова запустить, чтобы избежать холостой работы при зависании проигрывателя и в силу прихоти полета мысли покорного слуги. В сети находил несколько упоминаний, что system(); это плохой тон и нужно использовать сигналы плеера, но я отрубил флагом управление и потому реализация нужна такая вот... Спасибо за добрые и полезные советы!

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

ссзб. у mplayer как раз и есть более-менее удачный интерфейс через stdin. и вырубать его, и потом городить костыли - зло.

но уж если костылить - можешь получать pid по xid, и использовать kill (2)

ananas ★★★★★
()
Ответ на: комментарий от ananas

С Tk было чуть проще - я поверх создавал фрейм с -100,-100 координатами и перехватывал нажатия, отправляя нужное в mplayer, но на GTK курьезы поймал, хоть и логичнее он как-то, но с первого захода не получается сразу вызубрить.

minakov ★★★★★
() автор топика
Ответ на: комментарий от ananas

Ладно, в любом случае спасибо за наводку!

minakov ★★★★★
() автор топика
Ответ на: комментарий от minakov

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

ananas ★★★★★
()
Ответ на: комментарий от minakov

С Tk было чуть проще - я поверх создавал фрейм с -100,-100 координатами и перехватывал нажатия, отправляя нужное в mplayer, но на GTK курьезы поймал, хоть и логичнее он как-то, но с первого захода не получается сразу вызубрить.

А вы случаем перехватывали нажатия не из-за того, что при встраивании mplayer в Tk или Gtk он не реагирует на мышь/клавиатуру?

Возможно это косяк в mplayer: есть подозрение, что он для отрисовки использует родительское окно вместо дочернего.
Если это так, то это баг в mplayer, надо бы в исходники поглядеть.

Workaround есть, т.е. заставить вложенный mplayer нормально получать все события можно.

gv
()
Ответ на: комментарий от gv

Нет, там скорее окошко себе stdin забирает, не терминал же рожает процесс, насколько я понял

minakov ★★★★★
() автор топика
Ответ на: комментарий от minakov

Я имел в виду не stdin, а события окна — думал с ними проблема.

gv
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.