Commit f0afb7f
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 re-applied, the stored image may be disposed by then. This
can currently lead to errors because of access to disposed resources.
To avoid that, this change ensures that in case a drawn image becomes
disposed, a copy of it is created and stored for the lifetime of the GC.1 parent 239428b commit f0afb7f
File tree
4 files changed
+164
-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
+164
-16
lines changedLines changed: 38 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 | + | |
496 | 521 | | |
497 | 522 | | |
498 | 523 | | |
499 | 524 | | |
500 | | - | |
| 525 | + | |
501 | 526 | | |
502 | 527 | | |
503 | 528 | | |
| |||
507 | 532 | | |
508 | 533 | | |
509 | 534 | | |
510 | | - | |
| 535 | + | |
511 | 536 | | |
512 | 537 | | |
513 | 538 | | |
| |||
1013 | 1038 | | |
1014 | 1039 | | |
1015 | 1040 | | |
1016 | | - | |
1017 | | - | |
| 1041 | + | |
1018 | 1042 | | |
1019 | 1043 | | |
1020 | 1044 | | |
1021 | | - | |
| 1045 | + | |
1022 | 1046 | | |
1023 | 1047 | | |
1024 | 1048 | | |
1025 | 1049 | | |
1026 | 1050 | | |
1027 | | - | |
| 1051 | + | |
1028 | 1052 | | |
1029 | 1053 | | |
1030 | 1054 | | |
| |||
1081 | 1105 | | |
1082 | 1106 | | |
1083 | 1107 | | |
1084 | | - | |
1085 | | - | |
| 1108 | + | |
1086 | 1109 | | |
1087 | 1110 | | |
1088 | 1111 | | |
1089 | 1112 | | |
1090 | | - | |
| 1113 | + | |
1091 | 1114 | | |
1092 | 1115 | | |
1093 | 1116 | | |
| |||
1096 | 1119 | | |
1097 | 1120 | | |
1098 | 1121 | | |
1099 | | - | |
| 1122 | + | |
1100 | 1123 | | |
1101 | 1124 | | |
1102 | 1125 | | |
| |||
1154 | 1177 | | |
1155 | 1178 | | |
1156 | 1179 | | |
1157 | | - | |
1158 | | - | |
| 1180 | + | |
1159 | 1181 | | |
1160 | 1182 | | |
1161 | 1183 | | |
1162 | 1184 | | |
1163 | 1185 | | |
1164 | | - | |
| 1186 | + | |
1165 | 1187 | | |
1166 | 1188 | | |
1167 | 1189 | | |
1168 | 1190 | | |
1169 | 1191 | | |
1170 | 1192 | | |
1171 | 1193 | | |
1172 | | - | |
| 1194 | + | |
1173 | 1195 | | |
1174 | 1196 | | |
1175 | 1197 | | |
| |||
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