mirror of
https://github.com/gnif/LookingGlass.git
synced 2026-08-04 06:12:04 +00:00
[common] add frame scheduling protocol
This commit is contained in:
@@ -59,6 +59,7 @@ enum
|
||||
{
|
||||
LG_TRANSPORT_FEATURE_SET_CURSOR_POS = 0x1,
|
||||
LG_TRANSPORT_FEATURE_WINDOW_SIZE = 0x2,
|
||||
LG_TRANSPORT_FEATURE_FRAME_SCHEDULE = 0x4,
|
||||
};
|
||||
|
||||
typedef uint32_t LG_TransportFeatureFlags;
|
||||
@@ -133,6 +134,7 @@ typedef struct LG_TransportFrame
|
||||
{
|
||||
uint64_t serial;
|
||||
uint64_t timestamp;
|
||||
uint32_t scheduleGeneration;
|
||||
LG_TransportFrameFlags flags;
|
||||
// Backend-owned immutable metadata, valid until releaseFrame.
|
||||
const LG_TransportFrameFormat * format;
|
||||
@@ -176,9 +178,20 @@ typedef enum LG_TransportControlType
|
||||
{
|
||||
LG_TRANSPORT_CONTROL_SET_CURSOR_POS,
|
||||
LG_TRANSPORT_CONTROL_WINDOW_SIZE,
|
||||
LG_TRANSPORT_CONTROL_FRAME_SCHEDULE,
|
||||
}
|
||||
LG_TransportControlType;
|
||||
|
||||
enum
|
||||
{
|
||||
LG_TRANSPORT_FRAME_SCHEDULE_ACTIVE = 0x1,
|
||||
LG_TRANSPORT_FRAME_SCHEDULE_RELEASE = 0x2,
|
||||
LG_TRANSPORT_FRAME_SCHEDULE_RESET = 0x4,
|
||||
LG_TRANSPORT_FRAME_SCHEDULE_IMMEDIATE = 0x8,
|
||||
};
|
||||
|
||||
typedef uint32_t LG_TransportFrameScheduleFlags;
|
||||
|
||||
typedef struct LG_TransportControl
|
||||
{
|
||||
LG_TransportControlType type;
|
||||
@@ -186,6 +199,17 @@ typedef struct LG_TransportControl
|
||||
{
|
||||
struct { int32_t x, y; } cursorPos;
|
||||
struct { uint32_t width, height; } windowSize;
|
||||
struct
|
||||
{
|
||||
uint32_t generation;
|
||||
LG_TransportFrameScheduleFlags flags;
|
||||
uint64_t period;
|
||||
uint64_t targetSlack;
|
||||
int64_t phaseError;
|
||||
uint32_t feedbackFrameSerial;
|
||||
uint32_t lease;
|
||||
}
|
||||
frameSchedule;
|
||||
};
|
||||
}
|
||||
LG_TransportControl;
|
||||
|
||||
Reference in New Issue
Block a user