Ignore:
Timestamp:
10/02/18 10:26:22 (6 years ago)
Author:
bln4
Message:

org.expeditee.gui.Browser ->
org.expeditee.gui.DisplayController ->

Altered how the recently added callback system for refresh works. Several callbacks can now be queued up.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/gui/DisplayController.java

    r1171 r1182  
    14591459         */
    14601460        public static synchronized void requestRefresh(boolean useInvalidation) {
    1461                 requestRefresh(useInvalidation, () -> false);
     1461                requestRefresh(useInvalidation, null);
    14621462        }
    14631463       
     
    14821482                private Boolean _requeueWithInvalidation = null;
    14831483                private Object _lock = new Object();
    1484                 private BooleanSupplier callback;
     1484                private List<BooleanSupplier> callbacks = new LinkedList<BooleanSupplier>();
    14851485               
    14861486                /** Enqueues a redraw on the GIO thread, or remembers to do so once the current redraw finishes. */
    14871487                public void enqueue(final boolean useInvalidation, final BooleanSupplier callback)
    14881488                {
     1489                        synchronized(callbacks) {
     1490                                if(callback != null) {
     1491                                        callbacks.add(callback);
     1492                                }
     1493                        }
    14891494                        synchronized (_lock) {
    14901495                                if (!_enqueued) {
    14911496                                        _enqueued = true;
    1492                                         this.callback = callback;
    14931497                                        _useInvalidation = useInvalidation;
    14941498                                        EcosystemManager.getMiscManager().runOnGIOThread(this);
     
    15031507                {
    15041508                        try {
    1505                                 if(refresh(_useInvalidation) && callback != null) {
    1506                                         callback.getAsBoolean();
    1507                                         callback = null;
     1509                                if(refresh(_useInvalidation)) {
     1510                                        synchronized (callbacks) {
     1511                                                callbacks.forEach(cb -> cb.getAsBoolean());
     1512                                                callbacks.clear();
     1513                                        }
    15081514                                }
    15091515                        } catch (Throwable e) {
Note: See TracChangeset for help on using the changeset viewer.