gcc/libjava/java/awt/event/InvocationEvent.java
Bryce McKinlay 1b0bd03b7f EventQueue.java (invokeAndWait): Call postEvent() within synchronized block.
* java/awt/EventQueue.java (invokeAndWait): Call postEvent() within
	synchronized block.
	* java/awt/event/InvocationEvent (dispatch): Synchronize on notifier
	before calling notifyAll().

From-SVN: r35042
2000-07-15 05:42:47 +01:00

97 lines
2.0 KiB
Java

/* Copyright (C) 2000 Free Software Foundation
This file is part of libjava.
This software is copyrighted work licensed under the terms of the
Libjava License. Please consult the file "LIBJAVA_LICENSE" for
details. */
package java.awt.event;
import java.awt.*;
/**
* @author Tom Tromey <tromey@cygnus.com>
* @date April 8, 2000
*/
/* Status: Believed to be complete and correct. */
public class InvocationEvent extends AWTEvent implements ActiveEvent
{
public static final int INVOCATION_DEFAULT = 1200;
public static final int INVOCATION_FIRST = 1200;
public static final int INVOCATION_LAST = 1200;
protected InvocationEvent (Object source, int id, Runnable runnable,
Object notifier, boolean catchExceptions)
{
super (source, id);
this.runnable = runnable;
this.notifier = notifier;
this.catchExceptions = catchExceptions;
}
public InvocationEvent (Object source, Runnable runnable)
{
super (source, INVOCATION_DEFAULT);
this.runnable = runnable;
}
public InvocationEvent(Object source, Runnable runnable, Object notifier,
boolean catchExceptions)
{
super (source, INVOCATION_DEFAULT);
this.runnable = runnable;
this.notifier = notifier;
this.catchExceptions = catchExceptions;
}
public void dispatch ()
{
Exception e = null;
if (catchExceptions)
try
{
runnable.run ();
}
catch (Exception x)
{
exception = x;
}
else
runnable.run ();
if (notifier != null)
{
synchronized (notifier)
{
notifier.notifyAll ();
}
}
}
public Exception getException ()
{
return exception;
}
public String paramString ()
{
String r;
if (id == INVOCATION_DEFAULT)
r = "INVOCATION_DEFAULT";
else
r = "unknown type";
r += ",runnable=" + runnable + ",notifier=" + notifier +
",catchExceptions=" + catchExceptions;
return r;
}
protected boolean catchExceptions;
protected Object notifier;
protected Runnable runnable;
private Exception exception;
}