diff options
Diffstat (limited to 'src/libs/xpcom18a4/xpcom/threads/nsIEventQueueService.idl')
-rw-r--r-- | src/libs/xpcom18a4/xpcom/threads/nsIEventQueueService.idl | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/src/libs/xpcom18a4/xpcom/threads/nsIEventQueueService.idl b/src/libs/xpcom18a4/xpcom/threads/nsIEventQueueService.idl new file mode 100644 index 00000000..e9c93e86 --- /dev/null +++ b/src/libs/xpcom18a4/xpcom/threads/nsIEventQueueService.idl @@ -0,0 +1,151 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Rick Potts <rpotts@netscape.com> + * David Matiskella <davidm@netscape.com> + * David Hyatt <hyatt@netscape.com> + * Suresh Duddi <dp@netscape.com> + * Scott Collins <scc@netscape.com> + * Dan Matejka <danm@netscape.com> + * Doug Turner <dougt@netscape.com> + * Ray Whitmer <rayw@netscape.com> + * Dan Mosedale <dmose@mozilla.org> + * + * Alternatively, the contents of this file may be used under the terms of + * either of the GNU General Public License Version 2 or later (the "GPL"), + * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include "nsISupports.idl" +#include "nsIEventQueue.idl" + +%{C++ +#include "prthread.h" +#include "plevent.h" + +/* be761f00-a3b0-11d2-996c-0080c7cb1080 */ +#define NS_EVENTQUEUESERVICE_CID \ +{ 0xbe761f00, 0xa3b0, 0x11d2, \ + {0x99, 0x6c, 0x00, 0x80, 0xc7, 0xcb, 0x10, 0x80} } + +#define NS_EVENTQUEUESERVICE_CONTRACTID "@mozilla.org/event-queue-service;1" +#define NS_EVENTQUEUESERVICE_CLASSNAME "Event Queue Service" + +#define NS_CURRENT_THREAD ((PRThread*)0) +#define NS_CURRENT_EVENTQ ((nsIEventQueue*)0) + +#define NS_UI_THREAD ((PRThread*)1) +#define NS_UI_THREAD_EVENTQ ((nsIEventQueue*)1) + +%} + +/* a forward decl */ +interface nsIThread; + +[scriptable, uuid(a6cf90dc-15b3-11d2-932e-00805f8add32)] +interface nsIEventQueueService : nsISupports +{ + /** + * Creates and holds a native event queue for the current thread. + * "Native" queues have an associated callback mechanism which is + * automatically triggered when an event is posted. See plevent.c for + * details. + * @return NS_OK on success, or a host of failure indications + */ + void createThreadEventQueue(); + + /** + * Creates and hold a monitored event queue for the current thread. + * "Monitored" queues have no callback processing mechanism. + * @return NS_OK on success, or a host of failure indications + */ + void createMonitoredThreadEventQueue(); + + /** + * Somewhat misnamed, this method releases the service's hold on the event + * queue(s) for this thread. Subsequent attempts to access this thread's + * queue (GetThreadEventQueue, for example) may fail, though the queue itself + * will be destroyed only after all references to it are released and the + * queue itself is no longer actively processing events. + * @return nonsense. + */ + void destroyThreadEventQueue(); + + nsIEventQueue createFromIThread(in nsIThread aThread, + in boolean aNative); + + [noscript] nsIEventQueue createFromPLEventQueue(in PLEventQueuePtr + aPLEventQueue); + + // Add a new event queue for the current thread, making it the "current" + // queue. Return that queue, addrefed. + nsIEventQueue pushThreadEventQueue(); + + // release and disable the queue + void popThreadEventQueue(in nsIEventQueue aQueue); + + [noscript] nsIEventQueue getThreadEventQueue(in PRThreadPtr aThread); + + /** + * @deprecated in favor of getSpecialEventQueue, since that's + * scriptable and this isn't. + * + * Check for any "magic" event queue constants (NS_CURRENT_EVENTQ, + * NS_UI_THREAD_EVENTQ) and return the real event queue that they + * represent, AddRef()ed. Otherwise, return the event queue passed + * in, AddRef()ed. This is not scriptable because the arguments in + * question may be magic constants rather than real nsIEventQueues. + * + * @arg queueOrConstant either a real event queue or a magic + * constant to be resolved + * + * @return a real event queue, AddRef()ed + */ + [noscript] nsIEventQueue resolveEventQueue(in nsIEventQueue queueOrConstant); + + /** + * Returns the appropriate special event queue, AddRef()ed. Really + * just a scriptable version of ResolveEventQueue. + * + * @arg aQueue Either CURRENT_THREAD_EVENT_QUEUE or + * UI_THREAD_EVENT_QUEUE + * @return The requested nsIEventQueue, AddRef()ed + * @exception NS_ERROR_NULL_POINTER Zero pointer passed in for return value + * @exception NS_ERROR_ILLEGAL_VALUE Bogus constant passed in aQueue + * @exception NS_ERROR_FAILURE Error while calling + * GetThreadEventQueue() + */ + nsIEventQueue getSpecialEventQueue(in long aQueue); + + const long CURRENT_THREAD_EVENT_QUEUE = 0; + const long UI_THREAD_EVENT_QUEUE = 1; + +}; |