[c-host] increase delay as lgmp clients can now remove empty messages

This commit is contained in:
Geoffrey McRae 2020-01-27 14:47:21 +11:00
parent 8dbc1daaf4
commit 9958e557b7

View File

@ -47,14 +47,14 @@ static const struct LGMPQueueConfig FRAME_QUEUE_CONFIG =
{ {
.queueID = LGMP_Q_FRAME, .queueID = LGMP_Q_FRAME,
.numMessages = LGMP_Q_FRAME_LEN, .numMessages = LGMP_Q_FRAME_LEN,
.subTimeout = 5000 .subTimeout = 1000
}; };
static const struct LGMPQueueConfig POINTER_QUEUE_CONFIG = static const struct LGMPQueueConfig POINTER_QUEUE_CONFIG =
{ {
.queueID = LGMP_Q_POINTER, .queueID = LGMP_Q_POINTER,
.numMessages = LGMP_Q_POINTER_LEN, .numMessages = LGMP_Q_POINTER_LEN,
.subTimeout = 5000 .subTimeout = 1000
}; };
#define MAX_POINTER_SIZE (sizeof(KVMFRCursor) + (128 * 128 * 4)) #define MAX_POINTER_SIZE (sizeof(KVMFRCursor) + (128 * 128 * 4))
@ -96,12 +96,10 @@ static int lgmpThread(void * opaque)
} }
/* /*
2ms should be good for up to 500FPS, do not lower this value as excessive * do not decrease this value too far, see:
polling of io memory at this time causes QEMU/KVM stalls due to an unknown * https://lists.gnu.org/archive/html/qemu-devel/2020-01/msg06331.html
fault. */
See: https://lists.gnu.org/archive/html/qemu-devel/2020-01/msg06331.html usleep(100 * 1000);
*/
usleep(2000);
} }
app.running = false; app.running = false;
@ -158,10 +156,13 @@ static int frameThread(void * opaque)
break; break;
} }
LGMP_STATUS status;
// if we are repeating a frame just send the last frame again // if we are repeating a frame just send the last frame again
if (repeatFrame) if (repeatFrame)
{ {
lgmpHostQueuePost(app.frameQueue, 0, app.frameMemory[app.frameIndex]); if ((status = lgmpHostQueuePost(app.frameQueue, 0, app.frameMemory[app.frameIndex])) != LGMP_OK)
DEBUG_ERROR("%s", lgmpStatusString(status));
continue; continue;
} }
@ -195,7 +196,8 @@ static int frameThread(void * opaque)
framebuffer_prepare(fb); framebuffer_prepare(fb);
/* we post and then get the frame, this is intentional! */ /* we post and then get the frame, this is intentional! */
lgmpHostQueuePost(app.frameQueue, 0, app.frameMemory[app.frameIndex]); if ((status = lgmpHostQueuePost(app.frameQueue, 0, app.frameMemory[app.frameIndex])) != LGMP_OK)
DEBUG_ERROR("%s", lgmpStatusString(status));
app.iface->getFrame(fb); app.iface->getFrame(fb);
} }
DEBUG_INFO("Frame thread stopped"); DEBUG_INFO("Frame thread stopped");