Firefox взаимодействует с моими таймерами ?!(следовать за) - PullRequest
0 голосов
/ 30 апреля 2011

Сначала прочитайте мой старый пост, в котором я думал, что исправил это.(пропустите, если у вас нет времени)

Firefox как-то взаимодействует с моими таймерами?!?!Это безумие ^^

Для тех, кто не хочет читать, я просто подытожу: Firefox портит мои таймеры, когда он работает, поэтому мне пришлось переключиться с timeGetTime () на QueryPerformanceCounter(), как рекомендовано членами stackoverflow. И он все еще подвержен той же проблеме (запуск Firefox делает все «быстрым перенаправлением»).И я не понимаю, почему сейчас.Может я тут как-то облажался:

ULONG CTimer::time()
{
    __int64 temp;
    QueryPerformanceCounter((LARGE_INTEGER*)&temp);
    return (ULONG)(temp*1000/freq);
}
// where freq is the one queried with QueryPerformanceFrequency()

У кого-нибудь есть идеи?Также приветствуются любые советы.

Ответы [ 2 ]

1 голос
/ 30 апреля 2011

Как вы рассчитываете движение? Если вы точно рассчитываете дельта-время (время с последнего тика) с помощью QueryPerformanceCounter и рассчитываете движение на основе этого, у вас все будет хорошо. Таким образом, расстояние, которое каждый объект перемещает за тик, должно быть deltatime * speed.

Мое лучшее предположение, что вы этого не делаете, и вместо этого он основан на частоте кадров, и частота кадров изменяется при открытии Firefox (по любой причине). Было бы полезно показать ваш код.

Еще одна вещь - QueryPerformanceCounter / Frequency может быть разной для разных ядер - является ли ваше приложение многопоточным? Если это так, открытие Firefox может привести к тому, что Windows переключит ваше приложение на выполнение другого ядра, где QueryPerformanceCounter / Frequency отличаются. Вы должны всегда вызывать их с одного и того же процессорного ядра (установить привязку к процессору в потоке, который их вызывает).

0 голосов
/ 03 мая 2011

Сам Firefox не возится с высокопроизводительными таймерами, поэтому результат таких вещей, как setInterval, зависит от того, что делает что-то еще, например, Google Chrome.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...