Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | some tweaks to prevent undroidwish lockups on win32 during tear down |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
0dc9013a234f4054209334a8bcc5a0fe |
User & Date: | chw 2020-05-23 08:52:08.574 |
Context
2020-05-23
| ||
09:16 | more selected tk upstream changes check-in: 7fed2db68b user: chw tags: trunk | |
08:55 | merge with trunk check-in: 4dfcc43c2c user: chw tags: wtf-8-experiment | |
08:52 | some tweaks to prevent undroidwish lockups on win32 during tear down check-in: 0dc9013a23 user: chw tags: trunk | |
2020-05-21
| ||
06:03 | fix tls build on haiku with openssl 1.1 check-in: 9e36db2545 user: chw tags: trunk | |
Changes
Changes to jni/sdl2tk/generic/tkClipboard.c.
︙ | ︙ | |||
633 634 635 636 637 638 639 | * *---------------------------------------------------------------------- */ int TkClipInit( Tcl_Interp *interp, /* Interpreter to use for error reporting. */ | | | 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 | * *---------------------------------------------------------------------- */ int TkClipInit( Tcl_Interp *interp, /* Interpreter to use for error reporting. */ TkDisplay *dispPtr) /* Display to initialize. */ { XSetWindowAttributes atts; dispPtr->clipTargetPtr = NULL; dispPtr->clipboardActive = 0; dispPtr->clipboardAppPtr = NULL; |
︙ | ︙ | |||
672 673 674 675 676 677 678 | /* * Create selection handlers for types TK_APPLICATION and TK_WINDOW on * this window. Can't use the default handlers for these types because * this isn't a full-fledged window. */ Tk_CreateSelHandler(dispPtr->clipWindow, dispPtr->clipboardAtom, | | | 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 | /* * Create selection handlers for types TK_APPLICATION and TK_WINDOW on * this window. Can't use the default handlers for these types because * this isn't a full-fledged window. */ Tk_CreateSelHandler(dispPtr->clipWindow, dispPtr->clipboardAtom, dispPtr->applicationAtom, ClipboardAppHandler, dispPtr, XA_STRING); Tk_CreateSelHandler(dispPtr->clipWindow, dispPtr->clipboardAtom, dispPtr->windowAtom, ClipboardWindowHandler, dispPtr, XA_STRING); return TCL_OK; } /* *-------------------------------------------------------------- |
︙ | ︙ |
Changes to jni/sdl2tk/generic/tkEvent.c.
︙ | ︙ | |||
2119 2120 2121 2122 2123 2124 2125 | #if defined(_WIN32) && !defined(STATIC_BUILD) if (!tclStubsPtr) { return; } #endif | > > > > > | > > | 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 | #if defined(_WIN32) && !defined(STATIC_BUILD) if (!tclStubsPtr) { return; } #endif #if defined(_WIN32) && defined(PLATFORM_SDL) /* * Force clear of clipboard buffer here to prevent from * lockups when performing this operation on XCloseDisplay(). */ TkSelUpdateClipboard(NULL, NULL); #endif Tcl_MutexLock(&exitMutex); for (exitPtr = firstExitPtr; exitPtr != NULL; exitPtr = firstExitPtr) { /* * Be careful to remove the handler from the list before invoking its * callback. This protects us against double-freeing if the callback * should call TkDeleteExitHandler on itself. |
︙ | ︙ |
Changes to jni/sdl2tk/generic/tkSelect.c.
︙ | ︙ | |||
121 122 123 124 125 126 127 | ClientData clientData, /* Value to pass to proc. */ Atom format) /* Format in which the selection information * should be returned to the requestor. * XA_STRING is best by far, but anything * listed in the ICCCM will be tolerated * (blech). */ { | | | 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | ClientData clientData, /* Value to pass to proc. */ Atom format) /* Format in which the selection information * should be returned to the requestor. * XA_STRING is best by far, but anything * listed in the ICCCM will be tolerated * (blech). */ { TkSelHandler *selPtr; TkWindow *winPtr = (TkWindow *) tkwin; if (winPtr->dispPtr->multipleAtom == None) { TkSelInit(tkwin); } /* |
︙ | ︙ | |||
235 236 237 238 239 240 241 | Tk_Window tkwin, /* Token for window. */ Atom selection, /* The selection whose handler is to be * removed. */ Atom target) /* The target whose selection handler is to be * removed. */ { TkWindow *winPtr = (TkWindow *) tkwin; | | | | 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 | Tk_Window tkwin, /* Token for window. */ Atom selection, /* The selection whose handler is to be * removed. */ Atom target) /* The target whose selection handler is to be * removed. */ { TkWindow *winPtr = (TkWindow *) tkwin; TkSelHandler *selPtr, *prevPtr; TkSelInProgress *ipPtr; ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); /* * Find the selection handler to be deleted, or return if it doesn't * exist. */ |
︙ | ︙ | |||
349 350 351 352 353 354 355 | Tk_Window tkwin, /* Window to become new selection owner. */ Atom selection, /* Selection that window should own. */ Tk_LostSelProc *proc, /* Function to call when selection is taken * away from tkwin. */ ClientData clientData) /* Arbitrary one-word argument to pass to * proc. */ { | | | 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 | Tk_Window tkwin, /* Window to become new selection owner. */ Atom selection, /* Selection that window should own. */ Tk_LostSelProc *proc, /* Function to call when selection is taken * away from tkwin. */ ClientData clientData) /* Arbitrary one-word argument to pass to * proc. */ { TkWindow *winPtr = (TkWindow *) tkwin; TkDisplay *dispPtr = winPtr->dispPtr; TkSelectionInfo *infoPtr; Tk_LostSelProc *clearProc = NULL; ClientData clearData = NULL;/* Initialization needed only to prevent * compiler warning. */ if (dispPtr->multipleAtom == None) { |
︙ | ︙ | |||
456 457 458 459 460 461 462 | */ void Tk_ClearSelection( Tk_Window tkwin, /* Window that selects a display. */ Atom selection) /* Selection to be cancelled. */ { | | | 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 | */ void Tk_ClearSelection( Tk_Window tkwin, /* Window that selects a display. */ Atom selection) /* Selection to be cancelled. */ { TkWindow *winPtr = (TkWindow *) tkwin; TkDisplay *dispPtr = winPtr->dispPtr; TkSelectionInfo *infoPtr; TkSelectionInfo *prevPtr; TkSelectionInfo *nextPtr; Tk_LostSelProc *clearProc = NULL; ClientData clearData = NULL;/* Initialization needed only to prevent * compiler warning. */ |
︙ | ︙ | |||
573 574 575 576 577 578 579 | for (infoPtr = dispPtr->selectionInfoPtr; infoPtr != NULL; infoPtr = infoPtr->nextPtr) { if (infoPtr->selection == selection) { break; } } if (infoPtr != NULL) { | | | 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 | for (infoPtr = dispPtr->selectionInfoPtr; infoPtr != NULL; infoPtr = infoPtr->nextPtr) { if (infoPtr->selection == selection) { break; } } if (infoPtr != NULL) { TkSelHandler *selPtr; int offset, result, count; char buffer[TK_SEL_BYTES_AT_ONCE+1]; TkSelInProgress ip; for (selPtr = ((TkWindow *) infoPtr->owner)->selHandlerList; selPtr != NULL; selPtr = selPtr->nextPtr) { if (selPtr->target==target && selPtr->selection==selection) { |
︙ | ︙ | |||
826 827 828 829 830 831 832 | return result; } case SELECTION_HANDLE: { Atom target, format; const char *targetName = NULL; const char *formatName = NULL; | | | 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 | return result; } case SELECTION_HANDLE: { Atom target, format; const char *targetName = NULL; const char *formatName = NULL; CommandInfo *cmdInfoPtr; int cmdLength; static const char *const handleOptionStrings[] = { "-format", "-selection", "-type", NULL }; enum handleOptions { HANDLE_FORMAT, HANDLE_SELECTION, HANDLE_TYPE }; |
︙ | ︙ | |||
915 916 917 918 919 920 921 | Tk_CreateSelHandler(tkwin, selection, target, HandleTclCommand, cmdInfoPtr, format); } return TCL_OK; } case SELECTION_OWN: { | | | 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 | Tk_CreateSelHandler(tkwin, selection, target, HandleTclCommand, cmdInfoPtr, format); } return TCL_OK; } case SELECTION_OWN: { LostCommand *lostPtr; Tcl_Obj *commandObj = NULL; static const char *const ownOptionStrings[] = { "-command", "-displayof", "-selection", NULL }; enum ownOptions { OWN_COMMAND, OWN_DISPLAYOF, OWN_SELECTION }; int ownIndex; |
︙ | ︙ | |||
1088 1089 1090 1091 1092 1093 1094 | * Frees up memory associated with the selection. * *---------------------------------------------------------------------- */ void TkSelDeadWindow( | | | | | 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 | * Frees up memory associated with the selection. * *---------------------------------------------------------------------- */ void TkSelDeadWindow( TkWindow *winPtr) /* Window that's being deleted. */ { TkSelHandler *selPtr; TkSelInProgress *ipPtr; TkSelectionInfo *infoPtr, *prevPtr, *nextPtr; ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); /* * While deleting all the handlers, be careful to check whether * ConvertSelection or TkSelPropProc are about to process one of the |
︙ | ︙ | |||
1166 1167 1168 1169 1170 1171 1172 | */ void TkSelInit( Tk_Window tkwin) /* Window token (used to find display to * initialize). */ { | | | 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 | */ void TkSelInit( Tk_Window tkwin) /* Window token (used to find display to * initialize). */ { TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr; /* * Fetch commonly-used atoms. */ dispPtr->multipleAtom = Tk_InternAtom(tkwin, "MULTIPLE"); dispPtr->incrAtom = Tk_InternAtom(tkwin, "INCR"); |
︙ | ︙ | |||
1190 1191 1192 1193 1194 1195 1196 | /* * Using UTF8_STRING instead of the XA_UTF8_STRING macro allows us to * support older X servers that didn't have UTF8_STRING yet. This is * necessary on Unix systems. For more information, see: * http://www.cl.cam.ac.uk/~mgk25/unicode.html#x11 */ | | | 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 | /* * Using UTF8_STRING instead of the XA_UTF8_STRING macro allows us to * support older X servers that didn't have UTF8_STRING yet. This is * necessary on Unix systems. For more information, see: * http://www.cl.cam.ac.uk/~mgk25/unicode.html#x11 */ #if !defined(_WIN32) || defined(PLATFORM_SDL) dispPtr->utf8Atom = Tk_InternAtom(tkwin, "UTF8_STRING"); #else dispPtr->utf8Atom = (Atom) 0; #endif } /* |
︙ | ︙ | |||
1217 1218 1219 1220 1221 1222 1223 | * *---------------------------------------------------------------------- */ void TkSelClearSelection( Tk_Window tkwin, /* Window for which event was targeted. */ | | | | 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 | * *---------------------------------------------------------------------- */ void TkSelClearSelection( Tk_Window tkwin, /* Window for which event was targeted. */ XEvent *eventPtr) /* X SelectionClear event. */ { TkWindow *winPtr = (TkWindow *) tkwin; TkDisplay *dispPtr = winPtr->dispPtr; TkSelectionInfo *infoPtr; TkSelectionInfo *prevPtr; /* * Invoke clear function for window that just lost the selection. This * code is a bit tricky, because any callbacks due to selection changes |
︙ | ︙ | |||
1467 1468 1469 1470 1471 1472 1473 | TkSelectionInfo *infoPtr, /* Info about selection being retrieved. */ Atom target, /* Desired form of selection. */ char *buffer, /* Place to put selection characters. */ int maxBytes, /* Maximum # of bytes to store at buffer. */ Atom *typePtr) /* Store here the type of the selection, for * use in converting to proper X format. */ { | | | | 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 | TkSelectionInfo *infoPtr, /* Info about selection being retrieved. */ Atom target, /* Desired form of selection. */ char *buffer, /* Place to put selection characters. */ int maxBytes, /* Maximum # of bytes to store at buffer. */ Atom *typePtr) /* Store here the type of the selection, for * use in converting to proper X format. */ { TkWindow *winPtr = (TkWindow *) infoPtr->owner; TkDisplay *dispPtr = winPtr->dispPtr; if (target == dispPtr->timestampAtom) { if (maxBytes < 20) { return -1; } sprintf(buffer, "0x%x", (unsigned int) infoPtr->time); *typePtr = XA_INTEGER; return strlen(buffer); } if (target == dispPtr->targetsAtom) { TkSelHandler *selPtr; int length; Tcl_DString ds; if (maxBytes < 50) { return -1; } Tcl_DStringInit(&ds); |
︙ | ︙ |
Changes to jni/sdl2tk/sdl/SdlTkX.c.
︙ | ︙ | |||
1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 | } if (SdlTkX.focus_window_not_override == w) { SdlTkX.focus_window_not_override = None; } SdlTkClearPointer(_w); if (SdlTkX.current_primary == w) { SdlTkX.current_primary = None; SDL_SetClipboardText(""); } if (SdlTkX.current_clipboard == w) { SdlTkX.current_clipboard = None; SDL_SetClipboardText(""); } if (_w->atts.map_state != IsUnmapped) { SdlTkUnmapWindow(display, w); } /* Destroy children recursively */ | > > > > > > | 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 | } if (SdlTkX.focus_window_not_override == w) { SdlTkX.focus_window_not_override = None; } SdlTkClearPointer(_w); if (SdlTkX.current_primary == w) { SdlTkX.current_primary = None; #ifndef _WIN32 /* For _WIN32 this is done in tkEvent.c in exit handler. */ SDL_SetClipboardText(""); #endif } if (SdlTkX.current_clipboard == w) { SdlTkX.current_clipboard = None; #ifndef _WIN32 /* For _WIN32 this is done in tkEvent.c in exit handler. */ SDL_SetClipboardText(""); #endif } if (_w->atts.map_state != IsUnmapped) { SdlTkUnmapWindow(display, w); } /* Destroy children recursively */ |
︙ | ︙ |
Changes to jni/sdl2tk/sdl/tkSDLMenu.c.
︙ | ︙ | |||
1879 1880 1881 1882 1883 1884 1885 | void TkpMenuInit(void) { /* * Nothing to do. */ } | < | 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 | void TkpMenuInit(void) { /* * Nothing to do. */ } /* *---------------------------------------------------------------------- * * TkpMenuThreadInit -- * * Does platform-specific initialization of thread-specific menu state. |
︙ | ︙ |
Changes to jni/sdl2tk/sdl/tkSDLSelect.c.
︙ | ︙ | |||
88 89 90 91 92 93 94 | * until eventually there's no more selection to fetch. * *---------------------------------------------------------------------- */ void TkSelPropProc( | | | 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | * until eventually there's no more selection to fetch. * *---------------------------------------------------------------------- */ void TkSelPropProc( XEvent *eventPtr) /* X PropertyChange event. */ { } /* *-------------------------------------------------------------- * * TkSelEventProc -- |
︙ | ︙ | |||
113 114 115 116 117 118 119 | * *-------------------------------------------------------------- */ void TkSelEventProc( Tk_Window tkwin, /* Window for which event was targeted. */ | | | 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | * *-------------------------------------------------------------- */ void TkSelEventProc( Tk_Window tkwin, /* Window for which event was targeted. */ XEvent *eventPtr) /* X event: either SelectionClear, * SelectionRequest, or SelectionNotify. */ { /* * Case #1: SelectionClear events. */ if (eventPtr->type == SelectionClear) { |
︙ | ︙ | |||
162 163 164 165 166 167 168 169 170 171 172 173 174 175 | void TkSelUpdateClipboard( TkWindow *winPtr, /* Window associated with clipboard. */ TkClipboardTarget *targetPtr) /* Info about the content. */ { if ((targetPtr != NULL) && (targetPtr->format == XA_STRING) && (targetPtr->firstBufferPtr != NULL)) { Tcl_DString buffer, buffer2; Tcl_Encoding encoding; TkClipboardBuffer *bufPtr = targetPtr->firstBufferPtr; Tcl_DStringInit(&buffer); | > > > > > | 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | void TkSelUpdateClipboard( TkWindow *winPtr, /* Window associated with clipboard. */ TkClipboardTarget *targetPtr) /* Info about the content. */ { if (winPtr == NULL) { /* Clear SDL clipboard. */ SDL_SetClipboardText(""); return; } if ((targetPtr != NULL) && (targetPtr->format == XA_STRING) && (targetPtr->firstBufferPtr != NULL)) { Tcl_DString buffer, buffer2; Tcl_Encoding encoding; TkClipboardBuffer *bufPtr = targetPtr->firstBufferPtr; Tcl_DStringInit(&buffer); |
︙ | ︙ |
Changes to jni/sdl2tk/unix/tkUnixMenu.c.
︙ | ︙ | |||
1879 1880 1881 1882 1883 1884 1885 | void TkpMenuInit(void) { /* * Nothing to do. */ } | < | 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 | void TkpMenuInit(void) { /* * Nothing to do. */ } /* *---------------------------------------------------------------------- * * TkpMenuThreadInit -- * * Does platform-specific initialization of thread-specific menu state. |
︙ | ︙ |
Changes to jni/sdl2tk/unix/tkUnixSelect.c.
︙ | ︙ | |||
236 237 238 239 240 241 242 | * until eventually there's no more selection to fetch. * *---------------------------------------------------------------------- */ void TkSelPropProc( | | | | | 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 | * until eventually there's no more selection to fetch. * *---------------------------------------------------------------------- */ void TkSelPropProc( XEvent *eventPtr) /* X PropertyChange event. */ { IncrInfo *incrPtr; TkSelHandler *selPtr; int length, numItems; unsigned long i; Atom target, formatType; long buffer[TK_SEL_WORDS_AT_ONCE]; TkDisplay *dispPtr = TkGetDisplay(eventPtr->xany.display); Tk_ErrorHandler errorHandler; ThreadSpecificData *tsdPtr = |
︙ | ︙ | |||
515 516 517 518 519 520 521 | * *-------------------------------------------------------------- */ void TkSelEventProc( Tk_Window tkwin, /* Window for which event was targeted. */ | | | | | 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 | * *-------------------------------------------------------------- */ void TkSelEventProc( Tk_Window tkwin, /* Window for which event was targeted. */ XEvent *eventPtr) /* X event: either SelectionClear, * SelectionRequest, or SelectionNotify. */ { TkWindow *winPtr = (TkWindow *) tkwin; TkDisplay *dispPtr = winPtr->dispPtr; Tcl_Interp *interp; /* * Case #1: SelectionClear events. */ if (eventPtr->type == SelectionClear) { TkSelClearSelection(tkwin, eventPtr); } /* * Case #2: SelectionNotify events. Call the relevant function to handle * the incoming selection. */ if (eventPtr->type == SelectionNotify) { TkSelRetrievalInfo *retrPtr; char *propInfo, **propInfoPtr = &propInfo; Atom type; int format, result; unsigned long numItems, bytesAfter; Tcl_DString ds; for (retrPtr = pendingRetrievals; ; retrPtr = retrPtr->nextPtr) { |
︙ | ︙ | |||
738 739 740 741 742 743 744 | *---------------------------------------------------------------------- */ static void SelTimeoutProc( ClientData clientData) /* Information about retrieval in progress. */ { | | | 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 | *---------------------------------------------------------------------- */ static void SelTimeoutProc( ClientData clientData) /* Information about retrieval in progress. */ { TkSelRetrievalInfo *retrPtr = clientData; /* * Make sure that the retrieval is still in progress. Then see how long * it's been since any sort of response was received from the other side. */ if (retrPtr->result != -1) { |
︙ | ︙ | |||
792 793 794 795 796 797 798 | static void ConvertSelection( TkWindow *winPtr, /* Window that received the conversion * request; may not be selection's current * owner, be we set it to the current * owner. */ | | | 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 | static void ConvertSelection( TkWindow *winPtr, /* Window that received the conversion * request; may not be selection's current * owner, be we set it to the current * owner. */ XSelectionRequestEvent *eventPtr) /* Event describing request. */ { union { XSelectionEvent xsel; XEvent ev; } reply; /* Used to notify requestor that selection * info is ready. */ |
︙ | ︙ | |||
894 895 896 897 898 899 900 | */ incr.converts = ckalloc(incr.numConversions * sizeof(ConvertInfo)); incr.numIncrs = 0; for (i = 0; i < incr.numConversions; i++) { Atom target, property, type; long buffer[TK_SEL_WORDS_AT_ONCE]; | | | 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 | */ incr.converts = ckalloc(incr.numConversions * sizeof(ConvertInfo)); incr.numIncrs = 0; for (i = 0; i < incr.numConversions; i++) { Atom target, property, type; long buffer[TK_SEL_WORDS_AT_ONCE]; TkSelHandler *selPtr; int numItems, format; char *propPtr; target = incr.multAtoms[2*i]; property = incr.multAtoms[2*i + 1]; incr.converts[i].offset = -1; incr.converts[i].buffer[0] = '\0'; |
︙ | ︙ | |||
1120 1121 1122 1123 1124 1125 1126 | * *---------------------------------------------------------------------- */ static void SelRcvIncrProc( ClientData clientData, /* Information about retrieval. */ | | | | 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 | * *---------------------------------------------------------------------- */ static void SelRcvIncrProc( ClientData clientData, /* Information about retrieval. */ XEvent *eventPtr) /* X PropertyChange event. */ { TkSelRetrievalInfo *retrPtr = clientData; char *propInfo, **propInfoPtr = &propInfo; Atom type; int format, result; unsigned long numItems, bytesAfter; Tcl_Interp *interp; if ((eventPtr->xproperty.atom != retrPtr->property) |
︙ | ︙ | |||
1370 1371 1372 1373 1374 1375 1376 | static void IncrTimeoutProc( ClientData clientData) /* Information about INCR-mode selection * retrieval for which we are selection * owner. */ { | | | 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 | static void IncrTimeoutProc( ClientData clientData) /* Information about INCR-mode selection * retrieval for which we are selection * owner. */ { IncrInfo *incrPtr = clientData; incrPtr->idleTime++; if (incrPtr->idleTime >= 5) { incrPtr->numIncrs = 0; } else { incrPtr->timeout = Tcl_CreateTimerHandler(1000, IncrTimeoutProc, incrPtr); |
︙ | ︙ | |||
1483 1484 1485 1486 1487 1488 1489 | * None. * *---------------------------------------------------------------------- */ static void SelCvtFromX32( | | | 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 | * None. * *---------------------------------------------------------------------- */ static void SelCvtFromX32( long *propPtr, /* Property value from X. */ int numValues, /* Number of 32-bit values in property. */ Atom type, /* Type of property Should not be XA_STRING * (if so, don't bother calling this function * at all). */ Tk_Window tkwin, /* Window to use for atom conversion. */ Tcl_DString *dsPtr) /* Where to store the converted string. */ { |
︙ | ︙ | |||
1516 1517 1518 1519 1520 1521 1522 | } } Tcl_DStringAppend(dsPtr, " ", 1); } static void SelCvtFromX8( | | | 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 | } } Tcl_DStringAppend(dsPtr, " ", 1); } static void SelCvtFromX8( char *propPtr, /* Property value from X. */ int numValues, /* Number of 8-bit values in property. */ Atom type, /* Type of property Should not be XA_STRING * (if so, don't bother calling this function * at all). */ Tk_Window tkwin, /* Window to use for atom conversion. */ Tcl_DString *dsPtr) /* Where to store the converted string. */ { |
︙ | ︙ |