| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > xine_lib выбивает мое приложение |
| Автор: smalcom 14.11.2006, 12:57 |
| Моя программа для воспроизведения видео использует xine_lib, весь код именно проигрывателя(который использует xine_lib) вынесен в отдельный тред(использую QThread). Проблема в том что в xine_lib много всяких ошибок этапа воспроизведения, запуска и очистки решается тупо путем вызова assert и изза этого завершеется не только тред но и моя программа. Как этого избежать? Пускай завершается только тред я его могу перезапустить, пересоздать etc. Какие есть способы? |
| Автор: powerfox 14.11.2006, 17:56 |
| Может системно создавать процесс? И отлавливать изменения в поведении проигрывателя? |
| Автор: MAKCim 14.11.2006, 18:31 |
| smalcom, если завершение идет по сигналу - решение простое - его перехват (либо классическим способом, либо в отдельном потоке) и перезапуск QThread-а если сигнал не генерируется, то я бы сделал так основной код выделил бы в функцию (функции) далее вначале создать 2 потока (QThread и обычный posix (хотя QThread, наверное, через него и реализован, точно не знаю)) и процесс. Процесс выполняет следующее дествие: через определенный промежуток времени проверяет определенное значение в каком-нибудь совместно используемом 2-мя процессами буфере (это может быть в принципе любой IPC) и, если оно установлено, сбрасывает его. Это значение будет показывать то, что основной процесс еще жив. Если проверка показывает, что значение сброшено - это означает уничтожение основного процесса. В этом случае идет перезапуск Дополнительный поток в основном процессе нужен, чтобы через заранее известный интервал времени устанавливать сброшенное значение |
| Автор: smalcom 14.11.2006, 19:14 | ||||||||
эх еслиб ьак было я бы был самым счасливым програмистом В asser'ах xine_lib написано exit(вот это меня и мучает), я думал что может есть какойто выход что при запуске exit из созданного треда не вызывает полный выход из программы.
более чем уверен в этом
пока это единственный выход - запускать проигрыватель отдельным процессом и общаца с ним через сокеты, fifo etc. ну и при ошибках спаунить заново(fork, exec) |
| Автор: MAKCim 14.11.2006, 19:41 | ||||
в linuxthreads такое было бы возможно, т. к там поток - процесс, который совместно с родителем использует ресурсы Добавлено @ 19:42
а как эти 2 факта связаны? |
| Автор: smalcom 14.11.2006, 22:35 | ||
в C нет эксепшенов |
| Автор: MAKCim 14.11.2006, 22:53 | ||
а какое отношение обработка сигналов имеет к исключениям С++? |
| Автор: jonie 14.11.2006, 23:46 | ||
__try{..}__finally{..} __try{..}__except{..} мб ? ежели не сигнал ессно. |
| Автор: smalcom 14.11.2006, 23:59 | ||
чесно говоря даже не понял этой фразы с лету если бы xine_lib написали на C++ то там бы был удобный механизм использования эксепшенов а не exit'ов. упрекать разработчиков не имею права но как говорица таковы желания |
| Автор: MAKCim 15.11.2006, 20:54 | ||||
а, в этом смысле
|
| Автор: smalcom 18.6.2007, 11:48 |
| вопрос решил давно и наверно закрою темку. решил следующим образом - написал обертку похожую на ту что у них в доке и сделал в консоль вывод ошибок. открываю при помощи openvt и имею щасте вот ужо полгода. усем сенкс. |
| Автор: proc_maker 18.6.2007, 17:11 |
| Если Вы внимательно почитаете на сайте разработчиков xine, то увидите, что досих пор не существует способа заставить корректно работать xine + Qt в оконном менеджере. Это связано с реализацией блокировок дисплея обеими библиотеками под управлением оконного менеджера. Я полагаю Ваша проблема именно в этом. |
| Автор: smalcom 18.6.2007, 19:36 |
| проблема была в том, что через меня проходит много видеоинформации и всю ее проигрыватель должен уметь играть, но изза некоторых плохо кодированных файлов возникала ошибка декодера и все натыкалось на ассерт. но... приму к сведению, спасибо. |
| Автор: smartov 19.6.2007, 16:31 |
| smalcom, о! собрат по несчастью. Опиши пожалуйста поподробнее как ты решил эту проблему? Если не жалко то может какие-то часты сырцов с минимальными обьяснениями. А то тоже падает время от времени приложение. Заранее спасибо |
| Автор: smalcom 20.6.2007, 00:47 | ||
вот держи сорцы
шо нипанятна спрашуй |