kirsha Спасибо за инфу. Не знал раньше, да и не обращал на такую мелочь внимание.
Добавлено: ______________________________
Вообщем, пока оставимся на последнем моем варианте, что я выкладывал.
Немного привел в порядок код, чтоб показать разработчикам. Несколько моментов слегка изменил, на работу это вряд ли повлияеть.
Подытожим. Что нового у меня в отличии от последней SVN сборки:
- Пофиксил пропадание курсора в д3д режиме на менюхе основного окна на другом мониторе.
- Пофиксил момент, когда раскрываем меню - перебираемся во вложенное меню и делаем ПКМ: В итоге фокус окна на переднем плане, а меню ушло на задний план.
- Сделал выход из д3д более стабильным, подкорректировав событие правой кнопки мыши по д3д экрану, которое вызывало в последствии несрабатывание комбинации Ctrl+C (выход)
- Основательно Переделал поиск устройств отображения в системе, которые мы задаем для полного экрана. Основной контроль теперь по DeviceID. Это как минимум надежней и исключает массу проблем и ложных срабатываний автосмены режима экрана в определенных обычных и специфических ситуациях.
- добавил небольшой механиз деактиваций некоторых опций, в зависмости от активности/неактивности других опций. Так наглядней видно, какие опции не будут работать по разным причинам (конфликтуют или нежелательно их использовать, поэтому они отключаются)
- Переделал сам механизм режима автопереключения частот.
- с одной стороны упростил для стабильности, выкинув некий функционал, который только путал народ и практической ценности почти не составлял. Теперь автосмена всегда временна и обязательно вернется в прежний драйверный режим, какой был до запуска плеера.
*** Тут есть нюанс: если запустить видео,поменяется частота экрана и во время воспроизведения открыть драйвер и там сменить частоту - то плеер на выходе вернет именно эту частоту экрана. То есть всегда ту, которую мы руками указываем в драйвере.
- с другой стороны добавил параллельно альтернативный вариант автопереключения частот, что немного усложнило простоту
.
Основные плюсы Альтернативного режима:
1) переключение режима дисплея не влияет на стабильность воспроизведения, так как происходит до построения графа, и не ломает его как в обычном режиме.
2) определение видео FPS происходит не через сплиттер, а через встроенную в мрс-нс библиотеку MediaInfo. Ускорил некоторые моменты, на которых MediaInfo просто долго тупит (например определение фпс на кусочных БД;) Определение фпс ДВД сделал по основному файлу. Добавил небольшую логику для определения пуллдаун в файлах и какое же фпс в конечном итоге выдавать для автосмены
3) теперь можно использовать автопереключалку с эксклюзивным D3D Fullscreen Mode, что раньше не представлялось возможным.
4) в режиме MI автосмена происходит всегда при открытии файла и по-молчанию разворачивает окно на полный экран принудительно. Если стоит галка "Разрешить автосмену в окне", то разворота на
весь экран не будет, плеер останется в окне, но смена режима дисплеея произойдет все равно.
Вроде бы это все, что я поменял на сегодняшний момент.
Разработчики наверное потребуют одтельных фиксов по каждому пункту, что очень не хотелось бы делать, так как это еще кусок работы приличный.
V0lt,
Aleksoid1978 Или можно все сразу?