mirror of
https://github.com/gnif/LookingGlass.git
synced 2026-09-01 19:53:54 +00:00
Some checks failed
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
Add LGProtocol as a pinned submodule and consume its KVMFR protocol definitions throughout the client, host, IDD, OBS, and profiler. Keep Looking Glass framebuffer helpers local while removing duplicated protocol headers and migrating users to KVMFR-scoped types.
66 lines
1.9 KiB
C
66 lines
1.9 KiB
C
/**
|
|
* Looking Glass
|
|
* Copyright © 2017-2026 The Looking Glass Authors
|
|
* https://looking-glass.io
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the Free
|
|
* Software Foundation; either version 2 of the License, or (at your option)
|
|
* any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc., 59
|
|
* Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <LGProtocol/KVMFRClipboard.h>
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
static constexpr uint32_t LG_CLIPBOARD_MAPPING_MAGIC = 0x4c474342U;
|
|
static constexpr uint32_t LG_CLIPBOARD_MAPPING_VERSION = 5U;
|
|
|
|
struct ClipboardRingSlot
|
|
{
|
|
KVMFRClipboardSlotHeader header;
|
|
uint8_t data[KVMFR_CLIPBOARD_DATA_BYTES];
|
|
};
|
|
|
|
struct alignas(64) ClipboardRing
|
|
{
|
|
uint32_t produced;
|
|
uint32_t consumed;
|
|
uint32_t reserved[14];
|
|
ClipboardRingSlot slots[KVMFR_CLIPBOARD_SLOT_COUNT];
|
|
};
|
|
|
|
struct alignas(64) ClipboardMapping
|
|
{
|
|
uint32_t magic;
|
|
uint32_t version;
|
|
uint32_t size;
|
|
uint32_t slotBytes;
|
|
uint32_t slotCount;
|
|
uint32_t reserved0;
|
|
uint64_t epoch;
|
|
uint64_t authorityId[2];
|
|
uint8_t reserved1[16];
|
|
ClipboardRing helperToIdd;
|
|
ClipboardRing iddToHelper;
|
|
};
|
|
|
|
static_assert(sizeof(KVMFRClipboardSlotHeader) == 64,
|
|
"clipboard slot header alignment changed");
|
|
static_assert(offsetof(ClipboardMapping, helperToIdd) == 64,
|
|
"clipboard mapping header layout changed");
|
|
static_assert(offsetof(ClipboardMapping, iddToHelper) % 64 == 0,
|
|
"clipboard rings must remain cache-line aligned");
|