@Test public void destructorCallbackTest() throws InterruptedException { out.println(" - - - destructorCallbackTest - - - "); @SuppressWarnings("unchecked") final CLPlatform platform = CLPlatform.getDefault(version(CL_1_1)); if (platform == null) { out.println("aborting destructorCallbackTest"); return; } final CLContext context = CLContext.create(platform); try { final CLBuffer<?> buffer = context.createBuffer(32); final CountDownLatch countdown = new CountDownLatch(1); buffer.registerDestructorCallback( new CLMemObjectListener() { public void memoryDeallocated(final CLMemory<?> mem) { out.println("buffer released"); assertEquals(mem, buffer); countdown.countDown(); } }); buffer.release(); countdown.await(2, TimeUnit.SECONDS); assertEquals(countdown.getCount(), 0); } finally { context.release(); } }