![]() |
|
Модераторы: xvr |
![]()
|
|
| smalcom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 494 Регистрация: 16.10.2004 Где: Dnepr Репутация: нет Всего: 7 |
Моя программа для воспроизведения видео использует xine_lib, весь код именно проигрывателя(который использует xine_lib) вынесен в отдельный тред(использую QThread). Проблема в том что в xine_lib много всяких ошибок этапа воспроизведения, запуска и очистки решается тупо путем вызова assert и изза этого завершеется не только тред но и моя программа. Как этого избежать? Пускай завершается только тред я его могу перезапустить, пересоздать etc. Какие есть способы?
-------------------- What DA F...??? |
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 5 Всего: 97 |
Может системно создавать процесс? И отлавливать изменения в поведении проигрывателя?
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
smalcom,
если завершение идет по сигналу - решение простое - его перехват (либо классическим способом, либо в отдельном потоке) и перезапуск QThread-а если сигнал не генерируется, то я бы сделал так основной код выделил бы в функцию (функции) далее вначале создать 2 потока (QThread и обычный posix (хотя QThread, наверное, через него и реализован, точно не знаю)) и процесс. Процесс выполняет следующее дествие: через определенный промежуток времени проверяет определенное значение в каком-нибудь совместно используемом 2-мя процессами буфере (это может быть в принципе любой IPC) и, если оно установлено, сбрасывает его. Это значение будет показывать то, что основной процесс еще жив. Если проверка показывает, что значение сброшено - это означает уничтожение основного процесса. В этом случае идет перезапуск Дополнительный поток в основном процессе нужен, чтобы через заранее известный интервал времени устанавливать сброшенное значение Это сообщение отредактировал(а) MAKCim - 14.11.2006, 18:32 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| smalcom |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 494 Регистрация: 16.10.2004 Где: Dnepr Репутация: нет Всего: 7 |
эх еслиб ьак было я бы был самым счасливым програмистом В asser'ах xine_lib написано exit(вот это меня и мучает), я думал что может есть какойто выход что при запуске exit из созданного треда не вызывает полный выход из программы.
более чем уверен в этом
пока это единственный выход - запускать проигрыватель отдельным процессом и общаца с ним через сокеты, fifo etc. ну и при ошибках спаунить заново(fork, exec) -------------------- What DA F...??? |
||||||||
|
|||||||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
в linuxthreads такое было бы возможно, т. к там поток - процесс, который совместно с родителем использует ресурсы Добавлено @ 19:42
а как эти 2 факта связаны? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| smalcom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 494 Регистрация: 16.10.2004 Где: Dnepr Репутация: нет Всего: 7 |
в C нет эксепшенов -------------------- What DA F...??? |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
а какое отношение обработка сигналов имеет к исключениям С++? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: нет Всего: 118 |
__try{..}__finally{..} __try{..}__except{..} мб ? ежели не сигнал ессно. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| smalcom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 494 Регистрация: 16.10.2004 Где: Dnepr Репутация: нет Всего: 7 |
чесно говоря даже не понял этой фразы с лету если бы xine_lib написали на C++ то там бы был удобный механизм использования эксепшенов а не exit'ов. упрекать разработчиков не имею права но как говорица таковы желания -------------------- What DA F...??? |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
а, в этом смысле
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| smalcom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 494 Регистрация: 16.10.2004 Где: Dnepr Репутация: нет Всего: 7 |
вопрос решил давно и наверно закрою темку. решил следующим образом - написал обертку похожую на ту что у них в доке и сделал в консоль вывод ошибок. открываю при помощи openvt и имею щасте вот ужо полгода. усем сенкс.
-------------------- What DA F...??? |
|||
|
||||
| proc_maker |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 11.11.2006 Репутация: 1 Всего: 1 |
Если Вы внимательно почитаете на сайте разработчиков xine, то увидите, что досих пор не существует способа заставить корректно работать xine + Qt в оконном менеджере. Это связано с реализацией блокировок дисплея обеими библиотеками под управлением оконного менеджера. Я полагаю Ваша проблема именно в этом.
|
|||
|
||||
| smalcom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 494 Регистрация: 16.10.2004 Где: Dnepr Репутация: нет Всего: 7 |
проблема была в том, что через меня проходит много видеоинформации и всю ее проигрыватель должен уметь играть, но изза некоторых плохо кодированных файлов возникала ошибка декодера и все натыкалось на ассерт. но... приму к сведению, спасибо.
-------------------- What DA F...??? |
|||
|
||||
| smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: нет Всего: 259 |
smalcom, о! собрат по несчастью.
Опиши пожалуйста поподробнее как ты решил эту проблему? Если не жалко то может какие-то часты сырцов с минимальными обьяснениями. А то тоже падает время от времени приложение. Заранее спасибо |
|||
|
||||
| smalcom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 494 Регистрация: 16.10.2004 Где: Dnepr Репутация: нет Всего: 7 |
вот держи сорцы
шо нипанятна спрашуй -------------------- What DA F...??? |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |