Commit 3bb6975
committed
[Win32] Avoid disposed image usage in GC operations
When an image is drawn on a GC that image may be disposed right
afterwards. Since the GC can live much longer and a handle for that GC
at a different zoom may be requested later on, such that the operations
in the GC are reapplied, the stored image may then be disposed.
To avoid that, this change ensures that the GC operations store copies
of the images. In case an image is still under construction (i.e., if a
GC is currently created on top of the image) the copy cannot be done
immediately as the handles for that image are not yet created.
Therefore, in such a case the original image is stored and for the case
that it is disposed later on, an on-dispose listener is added such that
a copy can then be created on demand.1 parent 28f8835 commit 3bb6975
File tree
4 files changed
+165
-16
lines changed- bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics
- tests/org.eclipse.swt.tests.win32
- JUnit Tests/org/eclipse/swt/graphics
- META-INF
4 files changed
+165
-16
lines changedLines changed: 39 additions & 16 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
491 | 491 | | |
492 | 492 | | |
493 | 493 | | |
494 | | - | |
495 | | - | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
496 | 522 | | |
497 | 523 | | |
498 | 524 | | |
499 | 525 | | |
500 | | - | |
| 526 | + | |
501 | 527 | | |
502 | 528 | | |
503 | 529 | | |
| |||
507 | 533 | | |
508 | 534 | | |
509 | 535 | | |
510 | | - | |
| 536 | + | |
511 | 537 | | |
512 | 538 | | |
513 | 539 | | |
| |||
1013 | 1039 | | |
1014 | 1040 | | |
1015 | 1041 | | |
1016 | | - | |
1017 | | - | |
| 1042 | + | |
1018 | 1043 | | |
1019 | 1044 | | |
1020 | 1045 | | |
1021 | | - | |
| 1046 | + | |
1022 | 1047 | | |
1023 | 1048 | | |
1024 | 1049 | | |
1025 | 1050 | | |
1026 | 1051 | | |
1027 | | - | |
| 1052 | + | |
1028 | 1053 | | |
1029 | 1054 | | |
1030 | 1055 | | |
| |||
1081 | 1106 | | |
1082 | 1107 | | |
1083 | 1108 | | |
1084 | | - | |
1085 | | - | |
| 1109 | + | |
1086 | 1110 | | |
1087 | 1111 | | |
1088 | 1112 | | |
1089 | 1113 | | |
1090 | | - | |
| 1114 | + | |
1091 | 1115 | | |
1092 | 1116 | | |
1093 | 1117 | | |
| |||
1096 | 1120 | | |
1097 | 1121 | | |
1098 | 1122 | | |
1099 | | - | |
| 1123 | + | |
1100 | 1124 | | |
1101 | 1125 | | |
1102 | 1126 | | |
| |||
1154 | 1178 | | |
1155 | 1179 | | |
1156 | 1180 | | |
1157 | | - | |
1158 | | - | |
| 1181 | + | |
1159 | 1182 | | |
1160 | 1183 | | |
1161 | 1184 | | |
1162 | 1185 | | |
1163 | 1186 | | |
1164 | | - | |
| 1187 | + | |
1165 | 1188 | | |
1166 | 1189 | | |
1167 | 1190 | | |
1168 | 1191 | | |
1169 | 1192 | | |
1170 | 1193 | | |
1171 | 1194 | | |
1172 | | - | |
| 1195 | + | |
1173 | 1196 | | |
1174 | 1197 | | |
1175 | 1198 | | |
| |||
Lines changed: 17 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
139 | 139 | | |
140 | 140 | | |
141 | 141 | | |
| 142 | + | |
| 143 | + | |
142 | 144 | | |
143 | 145 | | |
144 | 146 | | |
| |||
997 | 999 | | |
998 | 1000 | | |
999 | 1001 | | |
| 1002 | + | |
| 1003 | + | |
| 1004 | + | |
| 1005 | + | |
| 1006 | + | |
| 1007 | + | |
| 1008 | + | |
| 1009 | + | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
1000 | 1017 | | |
1001 | 1018 | | |
1002 | 1019 | | |
| |||
Lines changed: 107 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
23 | 24 | | |
| 25 | + | |
| 26 | + | |
24 | 27 | | |
25 | 28 | | |
26 | 29 | | |
| |||
67 | 70 | | |
68 | 71 | | |
69 | 72 | | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 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 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
70 | 177 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
12 | 14 | | |
0 commit comments