94 BOOL init(CliprdrClientContext* clip);
95 BOOL uninit(CliprdrClientContext* clip);
97 bool handle_update(
const SDL_ClipboardEvent& ev);
100 UINT SendClientCapabilities();
101 void clearServerFormats();
102 UINT SendFormatListResponse(BOOL status);
103 UINT SendDataResponse(
const BYTE* data,
size_t size);
104 UINT SendDataRequest(uint32_t formatID,
const std::string& mime);
106 std::string getServerFormat(uint32_t
id);
107 uint32_t serverIdForMime(
const std::string& mime);
109 static UINT MonitorReady(CliprdrClientContext* context,
112 static UINT ReceiveServerCapabilities(CliprdrClientContext* context,
114 static UINT ReceiveServerFormatList(CliprdrClientContext* context,
116 static UINT ReceiveFormatListResponse(CliprdrClientContext* context,
118 static std::shared_ptr<BYTE> ReceiveFormatDataRequestHandle(
120 static UINT ReceiveFormatDataRequest(CliprdrClientContext* context,
122 static UINT ReceiveFormatDataResponse(CliprdrClientContext* context,
125 static const void* SDLCALL ClipDataCb(
void* userdata,
const char* mime_type,
size_t* size);
126 static void SDLCALL ClipCleanCb(
void* userdata);
128 static bool mime_is_file(
const std::string& mime);
129 static bool mime_is_text(
const std::string& mime);
130 static bool mime_is_image(
const std::string& mime);
131 static bool mime_is_bmp(
const std::string& mime);
132 static bool mime_is_html(
const std::string& mime);
135 CliprdrFileContext* _file =
nullptr;
136 CliprdrClientContext* _ctx =
nullptr;
137 wLog* _log =
nullptr;
138 wClipboard* _system =
nullptr;
139 std::atomic<bool> _sync =
false;
142 std::vector<CliprdrFormat> _serverFormats;
145 std::queue<ClipRequest> _request_queue;
149 cache_entry(
size_t len, std::shared_ptr<void> p) : size(len), ptr(std::move(p))
154 std::shared_ptr<void> ptr;
156 std::map<std::string, cache_entry> _cache_data;
157 std::vector<const char*> _current_mimetypes;