/* Maps GDK contentformats to w32formats or vice versa, depending on the *semanticsofthearraythatholdsthese. *Alsorememberswhetherthedataneedstobetransmuted.
*/ typedefstruct { int w32format; /* This is assumed to be an interned string, it will be *comparedbysimplycomparingthepointer.
*/ constchar *contentformat;
gboolean transmute;
} GdkWin32ContentFormatPair;
/* This object is just a sink to hold all the clipboard- and dnd-related data *thatotherwisewouldbeinglobalvariables.
*/ struct _GdkWin32Clipdrop
{
GObject parent_instance;
/* interned strings for well-known image formats */ constchar **known_pixbuf_formats; int n_known_pixbuf_formats;
/* GArray of GdkAtoms for various known Selection and DnD strings. *SizeisguaranteedtobeatleastGDK_WIN32_ATOM_INDEX_LAST
*/
GArray *known_atoms;
/* GArray of UINTs for various known clipboard formats. *SizeisguaranteedtobeatleastGDK_WIN32_CF_INDEX_LAST.
*/
GArray *known_clipboard_formats;
GdkWin32DndState dnd_target_state;
/* A target-keyed hash table of GArrays of GdkWin32ContentFormatPairs describing compatibility w32formats for a contentformat */
GHashTable *compatibility_w32formats; /* A format-keyed hash table of GArrays of GdkAtoms describing compatibility contentformats for a w32format */
GHashTable *compatibility_contentformats;
/* The thread that tries to open the clipboard and then *dostuffwithit.Sinceclipboardopeningcan *fail,wesplitthecodeintoathread,andlet *ittrytoopentheclipboardrepeatedlyuntil *theoperationtimesout.
*/
GThread *clipboard_open_thread;
/* The main loop run in the clipboard thread. *Whenwewanttocommunicatewiththethread,wejustadd *taskstoitviathiscontext.
*/
GMainContext *clipboard_main_context;
/* Our primary means of communicating with the thread. *Thecommunicationisone-wayonly-thethreadreplies *byjustqueueingfunctionstobecalledinthemain *threadbyusingg_idle_add().
*/
GAsyncQueue *clipboard_open_thread_queue;
/* We reply to clipboard render requests via this thing. *Wecan'tusemessages,sincetheclipboardthreadwill *stopspinningthemessageloopwhileitwaitsforus *torenderthedata.
*/
GAsyncQueue *clipboard_render_queue;
/* The thread that calls DoDragDrop (), which would *normallyblockourmainthread,asitrunsitsown *Windowsmessageloop.
*/
GThread *dnd_thread;
DWORD dnd_thread_id;
/* We reply to the various dnd thread requests via this thing. *Wecan'tusemessages,sincethedndthreadwill *stopspinningthemessageloopwhileitwaitsforus *tocomeupwithareply.
*/
GAsyncQueue *dnd_queue;
/* This counter is atomically incremented every time *themainthreadpushessomethingintothequeue, *andatomicallydecrementedeverytimetheDnDthread *popssomethingoutofit. *Itcanbecheaplyatomicallycheckedtoseeifthere's *anythinginthequeue.Ifthereis,thenthequeue *processing(whichrequiresexpensicelocks)canhappen.
*/ int dnd_queue_counter;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.