mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 23:25:24 +02:00
EventDispatchThread.java (run): Stop running when interrupted.
* java/awt/EventDispatchThread.java (run): Stop running when
interrupted.
* java/awt/EventQueue.java (pop): Stop dispatch thread when done.
Reset the queue after transferring its contents.
(push): Start a new dispatch thread if none is running.
From-SVN: r75977
This commit is contained in:
committed by
Fernando Nasser
parent
5ed5fd905c
commit
101900aa28
@@ -62,8 +62,18 @@ class EventDispatchThread extends Thread
|
||||
try
|
||||
{
|
||||
AWTEvent evt = queue.getNextEvent();
|
||||
if (isInterrupted ())
|
||||
{
|
||||
// We are interrupted when we should finish executing
|
||||
return;
|
||||
}
|
||||
queue.dispatchEvent(evt);
|
||||
}
|
||||
catch (InterruptedException ie)
|
||||
{
|
||||
// We are interrupted when we should finish executing
|
||||
return;
|
||||
}
|
||||
catch (Throwable x)
|
||||
{
|
||||
System.err.println("Exception during event dispatch:");
|
||||
|
||||
@@ -301,8 +301,8 @@ public class EventQueue
|
||||
/**
|
||||
* Allows a custom EventQueue implementation to replace this one.
|
||||
* All pending events are transferred to the new queue. Calls to postEvent,
|
||||
* getNextEvent, and peekEvent are forwarded to the pushed queue until it
|
||||
* is removed with a pop().
|
||||
* getNextEvent, and peekEvent and others are forwarded to the pushed queue
|
||||
* until it is removed with a pop().
|
||||
*
|
||||
* @exception NullPointerException if newEventQueue is null.
|
||||
*/
|
||||
@@ -320,6 +320,10 @@ public class EventQueue
|
||||
return;
|
||||
}
|
||||
|
||||
/* Make sure we have a live dispatch thread to drive the queue */
|
||||
if (dispatchThread == null)
|
||||
dispatchThread = new EventDispatchThread(this);
|
||||
|
||||
int i = next_out;
|
||||
while (i != next_in)
|
||||
{
|
||||
@@ -361,6 +365,13 @@ public class EventQueue
|
||||
if (++i == queue.length)
|
||||
i = 0;
|
||||
}
|
||||
// Empty the queue so it can be reused
|
||||
next_in = 0;
|
||||
next_out = 0;
|
||||
|
||||
// Tell our EventDispatchThread that it can end execution
|
||||
dispatchThread.interrupt ();
|
||||
dispatchThread = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user