Skip to content

Commit 47a9ab9

Browse files
committed
[GTK4] Add missing Callback dispose in Display
1 parent fe02ba5 commit 47a9ab9

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4688,6 +4688,10 @@ void releaseDisplay () {
46884688
activateCallback = null;
46894689
activateProc = 0;
46904690

4691+
computeSizeCallback.dispose();
4692+
computeSizeCallback = null;
4693+
computeSizeProc = 0;
4694+
46914695
gesturePressReleaseCallback.dispose();
46924696
gesturePressReleaseCallback = null;
46934697
gesturePressReleaseProc = 0;

tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_widgets_Display.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1627,6 +1627,18 @@ public void test_getWarnings() {
16271627
}
16281628
}
16291629

1630+
@Test
1631+
public void test_manyDispose() {
1632+
int i = 0;
1633+
// We iterate a number slightly bigger than MAX_CALLBACKS
1634+
// If a single non-static callback isn't disposed then the
1635+
// callback table will be filled and this test will fail
1636+
while (i++ < 300) {
1637+
final Display display = new Display();
1638+
display.dispose();
1639+
}
1640+
}
1641+
16301642
@Test
16311643
public void test_isDisposed() {
16321644
Display disp = new Display();

0 commit comments

Comments
 (0)