private void forceTileComputation(PlanarImage image, int tileX, int tileY, Semaphore semaphore, TileScheduler tileScheduler, TileComputationListener[] listeners, int parallelism) { Point[] points = new Point[]{new Point(tileX, tileY)}; acquirePermits(semaphore, 1); if (error != null) { semaphore.release(parallelism); throw error; } ///////////////////////////////////////////////////////////////////// // // Note: GPF pull-processing is triggered here!!! // tileScheduler.scheduleTiles(image, points, listeners); // ///////////////////////////////////////////////////////////////////// }
acquirePermits(semaphore, parallelism); if (error != null) { throw error;