100 BOOL init(CliprdrClientContext* clip);
101 BOOL uninit(CliprdrClientContext* clip);
103 bool handle_update(
const SDL_ClipboardEvent& ev);
106 UINT SendClientCapabilities();
107 void clearServerFormats();
108 UINT SendFormatListResponse(BOOL status);
109 UINT SendDataResponse(
const BYTE* data,
size_t size);
110 UINT SendDataRequest(uint32_t formatID,
const std::string& mime);
112 std::string getServerFormat(uint32_t
id);
113 uint32_t serverIdForMime(
const std::string& mime);
115 bool contains(
const char** mime_types, Sint32 count);
117 static UINT MonitorReady(CliprdrClientContext* context,
120 static UINT ReceiveServerCapabilities(CliprdrClientContext* context,
122 static UINT ReceiveServerFormatList(CliprdrClientContext* context,
124 static UINT ReceiveFormatListResponse(CliprdrClientContext* context,
126 static std::shared_ptr<BYTE> ReceiveFormatDataRequestHandle(
128 static UINT ReceiveFormatDataRequest(CliprdrClientContext* context,
130 static UINT ReceiveFormatDataResponse(CliprdrClientContext* context,
133 static const void* SDLCALL ClipDataCb(
void* userdata,
const char* mime_type,
size_t* size);
134 static void SDLCALL ClipCleanCb(
void* userdata);
136 static bool mime_is_file(
const std::string& mime);
137 static bool mime_is_text(
const std::string& mime);
138 static bool mime_is_image(
const std::string& mime);
139 static bool mime_is_bmp(
const std::string& mime);
140 static bool mime_is_html(
const std::string& mime);
143 CliprdrFileContext* _file =
nullptr;
144 CliprdrClientContext* _ctx =
nullptr;
145 wLog* _log =
nullptr;
146 wClipboard* _system =
nullptr;
147 std::atomic<bool> _sync =
false;
149 Uint64 _last_timestamp = 0;
151 std::vector<CliprdrFormat> _serverFormats;
154 std::queue<ClipRequest> _request_queue;
158 cache_entry(
size_t len, std::shared_ptr<void> p) : size(len), ptr(std::move(p))
163 std::shared_ptr<void> ptr;
165 std::map<std::string, cache_entry> _cache_data;
166 std::vector<const char*> _current_mimetypes;
168 std::string _mime_uuid;