Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

event_listener_win32.cpp

Go to the documentation of this file.
00001 
00002 #include "Core/precomp.h"
00003 #include "event_listener_win32.h"
00004 #include "event_trigger_win32.h"
00005 #include "API/Core/System/system.h"
00006 
00008 // CL_EventListener_Win32 construction:
00009 
00010 CL_EventListener_Win32::CL_EventListener_Win32(CL_EventListener *owner)
00011 :
00012         CL_EventListener_Generic(owner)
00013 {
00014 }
00015 
00016 CL_EventListener_Win32::~CL_EventListener_Win32()
00017 {
00018 }
00019 
00021 // CL_EventListener_Win32 implementation:
00022 
00023 bool CL_EventListener_Win32::wait(int timeout)
00024 {
00025         if (triggers.empty()) // no triggers, just do the sleep.
00026         {
00027                 CL_System::sleep(timeout);
00028                 return false;
00029         }
00030 
00031         int num_handles = triggers.size();
00032         HANDLE *handles = new HANDLE[num_handles];
00033 
00034         int i = 0;
00035         std::list<CL_EventTrigger_Generic *>::iterator it;
00036         for (it = triggers.begin(); it != triggers.end(); it++)
00037         {
00038                 CL_EventTrigger_Win32 *trigger = static_cast<CL_EventTrigger_Win32*>(*it);
00039                 handles[i++] = trigger->wait_handle;
00040         }
00041 
00042         DWORD result = WaitForMultipleObjects(
00043                 num_handles,
00044                 handles,
00045                 FALSE,
00046                 timeout == -1 ? INFINITE : timeout);
00047 
00048         delete[] handles;
00049 
00050         if (result == WAIT_TIMEOUT) return false;
00051         return true;
00052 }

Generated at Wed Apr 4 19:54:00 2001 for ClanLib by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001