org.eclipse.swt.widgets.RunnableLock Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.eclipse.swt.gtk.linux.aarch64 Show documentation
Show all versions of org.eclipse.swt.gtk.linux.aarch64 Show documentation
Standard Widget Toolkit for GTK on aarch64
The newest version!
/*******************************************************************************
* Copyright (c) 2000, 2011 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.swt.widgets;
/**
* Instances of this class are used to ensure that an
* application cannot interfere with the locking mechanism
* used to implement asynchronous and synchronous communication
* between widgets and background threads.
*/
class RunnableLock {
Runnable runnable;
Thread thread;
Throwable throwable;
RunnableLock (Runnable runnable) {
this.runnable = runnable;
}
boolean done () {
return runnable == null || throwable != null;
}
void run (Display display) {
if (runnable != null) {
try {
runnable.run ();
} catch (RuntimeException exception) {
display.getRuntimeExceptionHandler ().accept (exception);
} catch (Error error) {
display.getErrorHandler ().accept (error);
}
}
runnable = null;
}
}