Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | On OSX 10.13 and earlier a different strategy is needed. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | aqua_image_tests |
Files: | files | file ages | folders |
SHA3-256: |
f10e86365d1977f24bd0a650c5627f48 |
User & Date: | culler 2019-05-21 18:29:39.877 |
Context
2019-05-21
| ||
19:49 | Use vwait with a timeout to wait for test image display, as suggested by dkf. check-in: 36f8fe9d user: culler tags: aqua_image_tests | |
18:29 | On OSX 10.13 and earlier a different strategy is needed. check-in: f10e8636 user: culler tags: aqua_image_tests | |
16:26 | Sometimes update is not enough, and you just have to wait. check-in: ec9ca061 user: culler tags: aqua_image_tests | |
Changes
Changes to generic/tkTest.c.
︙ | ︙ | |||
27 28 29 30 31 32 33 | #ifdef _WIN32 #include "tkWinInt.h" #endif #if defined(MAC_OSX_TK) #include "tkMacOSXInt.h" #include "tkScrollbar.h" | | | | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #ifdef _WIN32 #include "tkWinInt.h" #endif #if defined(MAC_OSX_TK) #include "tkMacOSXInt.h" #include "tkScrollbar.h" #define LOG_DISPLAY TkTestLogDisplay() #else #define LOG_DISPLAY 1 #endif #ifdef __UNIX__ #include "tkUnixInt.h" #endif /* |
︙ | ︙ | |||
1577 1578 1579 1580 1581 1582 1583 | * * This also has the consequence that the image changed command will log * different results on Aqua than on other systems, because when the image * is redisplayed in the drawRect method the entire image will be drawn, * not just the changed portion. Tests must account for this. */ | | | 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 | * * This also has the consequence that the image changed command will log * different results on Aqua than on other systems, because when the image * is redisplayed in the drawRect method the entire image will be drawn, * not just the changed portion. Tests must account for this. */ if (LOG_DISPLAY) { sprintf(buffer, "%s display %d %d %d %d", instPtr->masterPtr->imageName, imageX, imageY, width, height); Tcl_SetVar2(instPtr->masterPtr->interp, instPtr->masterPtr->varName, NULL, buffer, TCL_GLOBAL_ONLY|TCL_APPEND_VALUE|TCL_LIST_ELEMENT); } if (width > (instPtr->masterPtr->width - imageX)) { width = instPtr->masterPtr->width - imageX; |
︙ | ︙ |
Changes to macosx/tkMacOSXInt.h.
︙ | ︙ | |||
198 199 200 201 202 203 204 | MODULE_SCOPE void TkpClipDrawableToRect(Display *display, Drawable d, int x, int y, int width, int height); MODULE_SCOPE void TkpRetainRegion(TkRegion r); MODULE_SCOPE void TkpReleaseRegion(TkRegion r); MODULE_SCOPE void TkpShiftButton(NSButton *button, NSPoint delta); MODULE_SCOPE Bool TkpAppIsDrawing(void); MODULE_SCOPE void TkpDisplayWindow(Tk_Window tkwin); | | | 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 | MODULE_SCOPE void TkpClipDrawableToRect(Display *display, Drawable d, int x, int y, int width, int height); MODULE_SCOPE void TkpRetainRegion(TkRegion r); MODULE_SCOPE void TkpReleaseRegion(TkRegion r); MODULE_SCOPE void TkpShiftButton(NSButton *button, NSPoint delta); MODULE_SCOPE Bool TkpAppIsDrawing(void); MODULE_SCOPE void TkpDisplayWindow(Tk_Window tkwin); MODULE_SCOPE Bool TkTestLogDisplay(void); MODULE_SCOPE Bool TkMacOSXInDarkMode(Tk_Window tkwin); /* * Include the stubbed internal platform-specific API. */ #include "tkIntPlatDecls.h" |
︙ | ︙ |
Changes to macosx/tkMacOSXTest.c.
︙ | ︙ | |||
86 87 88 89 90 91 92 | return TCL_OK; } #endif /* *---------------------------------------------------------------------- * | | | | | | > | > | < | > > | > | > > > | 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | return TCL_OK; } #endif /* *---------------------------------------------------------------------- * * TkTestLogDisplay -- * * The test image display procedure calls this to determine whether it * should write a log message recording that it has being run. On OSX * 10.14 and later, only calls to the display procedure which occur inside * of the drawRect method should be logged, since those are the only ones * which actually draw anything. On earlier systems the opposite is true. * The calls from within the drawRect method are redundant, since the * first time the display procedure is run it will do the drawing and that * first call will usually not occur inside of drawRect. * * Results: * On OSX 10.14 and later, returns true if and only if called from * within [NSView drawRect]. On earlier systems returns false if * and only if called from with [NSView drawRect]. * * Side effects: * None * *---------------------------------------------------------------------- */ MODULE_SCOPE Bool TkTestLogDisplay(void) { if ([NSApp macMinorVersion] >= 14) { return [NSApp isDrawing]; } else { return ![NSApp isDrawing]; } } /* * Local Variables: * mode: objc * c-basic-offset: 4 |
︙ | ︙ |
Changes to tests/canvImg.test.
︙ | ︙ | |||
717 718 719 720 721 722 723 | .c scale image 25 0 2.0 1.5 .c bbox image } -cleanup { .c delete all image delete foo } -result {75 150 105 165} | | | | 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 | .c scale image 25 0 2.0 1.5 .c bbox image } -cleanup { .c delete all image delete foo } -result {75 150 105 165} if {[tk windowingsystem] == "aqua" && $tcl_platform(osVersion) > 18} { # Aqua >= 10.14 will redraw the entire image. set result_10_1 {{foo display 0 0 30 15}} } else { set result_10_1 {{foo display 2 4 6 8}} } test canvImg-10.1 {TranslateImage procedure} -constraints testImageType -setup { .c delete all update |
︙ | ︙ | |||
769 770 771 772 773 774 775 | set x {} foo changed 0 0 0 0 40 50 .c bbox image } -cleanup { .c delete all image delete foo } -result {30 75 70 125} | | | | 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 | set x {} foo changed 0 0 0 0 40 50 .c bbox image } -cleanup { .c delete all image delete foo } -result {30 75 70 125} if {[tk windowingsystem] == "aqua" && $tcl_platform(osVersion) > 18} { # Aqua >= 10.14 will redraw the entire image. set result_11_3 {{foo2 display 0 0 80 60}} } else { set result_11_3 {{foo2 display 0 0 20 40}} } test canvImg-11.3 {ImageChangedProc procedure} -constraints { testImageType } -setup { |
︙ | ︙ |
Changes to tests/image.test.
︙ | ︙ | |||
359 360 361 362 363 364 365 | button .b -image myimage2 lappend res [image inuse myimage2] } -cleanup { imageCleanup catch {destroy .b} } -result [list 0 1] | | | | | | 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 | button .b -image myimage2 lappend res [image inuse myimage2] } -cleanup { imageCleanup catch {destroy .b} } -result [list 0 1] if {[tk windowingsystem] == "aqua" && $tcl_platform(osVersion) > 18} { # Aqua >= 10.14 will redraw the entire image in drawRect. set result_9_1 {{foo display 0 0 30 15}} } else { set result_9_1 {{foo display 5 6 7 8}} } test image-9.1 {Tk_ImageChanged procedure} -constraints testImageType -setup { .c delete all imageCleanup update } -body { image create test foo -variable x .c create image 50 50 -image foo update set x {} foo changed 5 6 7 8 30 15 imageWait return $x } -cleanup { .c delete all imageCleanup } -result $result_9_1 if {[tk windowingsystem] == "aqua" && $tcl_platform(osVersion) > 18} { # Aqua >= 10.14 will redraw the entire image. set result_9_2 {{foo display 0 0 30 15} {foo display 0 0 30 15}} } else { set result_9_2 {{foo display 5 6 25 9} {foo display 0 0 12 14}} } test image-9.2 {Tk_ImageChanged procedure} -constraints testImageType -setup { .c delete all imageCleanup |
︙ | ︙ |