mirror of
https://github.com/moonlight-stream/moonlight-qt.git
synced 2026-06-17 14:11:33 +00:00
Remove 10 ms sleep hidden inside SDL_WaitEvent(). This fixes mouse polling rate being capped at 100 Hz (1 second / 10 ms) and the rendering FPS being capped at 90 FPS.
This commit is contained in:
@@ -13,7 +13,7 @@ You can follow development on our [Discord server](https://discord.gg/6ERtzFY).
|
|||||||
|
|
||||||
## Features
|
## Features
|
||||||
- Hardware accelerated video decoding on Windows, Mac, and Linux
|
- Hardware accelerated video decoding on Windows, Mac, and Linux
|
||||||
- Supports streaming at up to 90 FPS on high refresh rate monitors
|
- Supports streaming at up to 120 FPS on high refresh rate monitors
|
||||||
- Supports streaming at 720p, 1080p, 1440p, or 4K
|
- Supports streaming at 720p, 1080p, 1440p, or 4K
|
||||||
- 5.1 surround sound audio
|
- 5.1 surround sound audio
|
||||||
- HEVC support for better image quality at reduced bandwidth
|
- HEVC support for better image quality at reduced bandwidth
|
||||||
|
|||||||
@@ -82,9 +82,9 @@ int StreamingPreferences::getMaximumStreamingFrameRate()
|
|||||||
for (int i = 0; i < SDL_GetNumVideoDisplays(); i++) {
|
for (int i = 0; i < SDL_GetNumVideoDisplays(); i++) {
|
||||||
SDL_DisplayMode mode;
|
SDL_DisplayMode mode;
|
||||||
if (SDL_GetCurrentDisplayMode(i, &mode) == 0) {
|
if (SDL_GetCurrentDisplayMode(i, &mode) == 0) {
|
||||||
// Cap the frame rate at 90 FPS, since I can't seem to get
|
// Cap the frame rate at 120 FPS. Past this, the encoders start
|
||||||
// much more out of GFE even with the game rendering at > 300 FPS.
|
// to max out and drop frames.
|
||||||
maxFrameRate = qMax(maxFrameRate, qMin(90, mode.refresh_rate));
|
maxFrameRate = qMax(maxFrameRate, qMin(120, mode.refresh_rate));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -667,7 +667,15 @@ void Session::exec()
|
|||||||
// Hijack this thread to be the SDL main thread. We have to do this
|
// Hijack this thread to be the SDL main thread. We have to do this
|
||||||
// because we want to suspend all Qt processing until the stream is over.
|
// because we want to suspend all Qt processing until the stream is over.
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
while (SDL_WaitEvent(&event)) {
|
for (;;) {
|
||||||
|
// We explicitly use SDL_PollEvent() and SDL_Delay() because
|
||||||
|
// SDL_WaitEvent() has an internal SDL_Delay(10) inside which
|
||||||
|
// blocks this thread too long for high polling rate mice and high
|
||||||
|
// refresh rate displays.
|
||||||
|
if (!SDL_PollEvent(&event)) {
|
||||||
|
SDL_Delay(1);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
case SDL_QUIT:
|
case SDL_QUIT:
|
||||||
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION,
|
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION,
|
||||||
|
|||||||
Reference in New Issue
Block a user