Ну он у меня сразу открылся, закрылся. Потом открылся, дал запустить игрушку, поиграл музыку и закрылся.
Вид для печати
Ну он у меня сразу открылся, закрылся. Потом открылся, дал запустить игрушку, поиграл музыку и закрылся.
Короче, винда не может в точные таймеры, Qt::PrecisionTimer валится в любом случае. Qt::CoarseTimer сильно меняет интервал. Пока думаю заюзать таймер от SDL и посмотреть, что будет там
SAM style, интересно, а зачем тебе вообще точный таймер? недостаточно привязки к одному vsync?
QT4 к примеру не работает как надо с HiDPI мониторами (не масштабирует UI) и вообще не развивается давно.
Кстати и с QT5 кривовато работает/выглядит диалог настроек и дебаггер в винде на HiDPI мониторе. (а в линуксе вроде нормально) Выложу позже скриншоты.
- - - Добавлено - - -
Так а если нет синхронизации с vsync, в чем смысл использования таймера? Не проще ли тогда синхронизироваться по звуку, как в zemu сделано, насколько я помню?
https://wiki.libsdl.org/SDL_CreateRenderer - см. флаги
- - - Добавлено - - -
а звук, напротив, подгоняю под видео через небольшую разницу кол-ва сэмплов; и нормально, ничего не воет и не хрипит
У меня SDL только звук. Окно вырисовывается Qt. А SDL_Renderer-у, как я понял, нужен SDL_Window
- - - Добавлено - - -
Ладно, вопрос в другом. Есть поток, который занимается собственно эмуляцией. Отрабатывает сколько надо и засыпает, пока его не разбудят для следующей порции. Какие есть способы реализации оной схемы?
Возможно, победил. Вместо мутекса использовал глобальную переменную, сигнализирующую потоку, что надо бы поработать. Поток спит короткими урывками и между ними проверяет, не пора ли...
- - - Добавлено - - -
Попробуйте эту сборку. Вот тут синхронизация по звуку. Если вывод в NULL - по таймеру SDL.
[ win32 ]