judelaw
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Все, нашел баг дело в том, что переменная MaxFpsCount - это максимальное количество строк списка нашего листа. А в объявление в PPageFullscreen.h int m_iSeldm[MaxFpsCount] - это неправильно, так как массив m_iSeldm[] относится к количеству строк в комбобоксе, то есть списка DisplayMode, который ес-но может быть больше 30, даже больше 100. Короче, нужно просто исправить int m_iSeldm[MaxFpsCount] на int m_iSeldm[1000] (с запасом) Странно, что баг не всегда проявлялся и только с двумя экранами и только одноразово. Баг можно было словить так: Удаляем ветку Габест запускаем плеер - Настройки - полный экран выбираем другой монитор (не текущий) ставим галку на Использовать автосмену в любой строке меняем Режим Дисплея (этот пункт ключевой) нажимаем ОК в результате - креш плеера. Добавлено: V0lt Поправь пожалуйста. Добавлено: Aleksoid1978 Цитата: Смотри на примере уже готовой функции : | как то так??? : // fix for Microsoft DTV-DVD Video Decoder - video freeze after STOP/PLAY int iHaali = 0; CComPtr<IPin> pPinTo = this, pTmp; while(pPinTo && SUCCEEDED(pPinTo->ConnectedTo(&pTmp)) && (pPinTo = pTmp)) { pTmp = NULL; CComPtr<IBaseFilter> pBF = GetFilterFromPin(pPinTo); if(GetCLSID(pBF) == GUIDFromCString(_T("{760A8F35-97E7-479D-AAF5-DA9EFF95D751}"))) { // Haali Renderer iHaali = 1; break; } pPinTo = GetFirstPin(pBF, PINDIR_OUTPUT); } if(IsConnected() && iHaali == 0) { GetConnected()->BeginFlush(); GetConnected()->EndFlush(); } | Всего записей: 2830 | Зарегистр. 22-09-2009 | Отправлено: 20:09 20-11-2011 | Исправлено: judelaw, 20:14 20-11-2011 |
|