From: Eric S. <sun...@us...> - 2001-08-26 13:54:59
|
Date: Sunday August 26, 2001 @ 6:54 Author: sunshine Update of /cvsroot/crystal/CS/include/cssys/win32 In directory usw-pr-cvs1:/tmp/cvs-serv17648/include/cssys/win32 Modified Files: win32.h Log Message: Eric Sunshine made the following changes to the project: -*- Removed all event related code and functionality from csSystemDriver and the cssys library as part of the continuing effort to eliminate the monolithic system driver concept. All event related functionality has been generalized and moved into the csutil library. -*- Rather than the system driver being responsible for event related activities, an object of type iEventQueue is now available to clients via the shared object registry (iObjectRegistry) and is registered with the name "crystalspace.event.queue". -*- Added new SCF interface iEventQueue. All event-related activities in CS are now performed by interacting with an object implementing this interface. Everything related to a particular event queue is now maintained by that queue rather than being manually maintained by the system driver. Examples of ancillary functions and objects now maintained by the event queue include event outlets, event cords, and event handlers. iEventQueue provides the following main functions (along with some other minor ones): - Process(); Processes the event queue, dispatching each contained event to the appropriate event handler. Also responsible for sending the cscmdPreProcess and cscmdPostProcess events to interested listeners. This method takes over all the major functionality which used to be handled by iSystem::NextFrame(). Re-implemented iSystem::NextFrame() as a very thin cover over this method. - Dispatch(); Actually dispatches each event retrieved from the queue by Process(). This method takes over all the major functionality which used to be handled by iSystem::HandleEvent(). - RegisterListener(); Entities interested in listening for events register with the event queue via this method. This replaces the old iSystem::CallOnEvents() method. Also added RemoveListener() to provide a way for entities to stop listening; and ChangeListenerTrigger() to provide a way for entities to alter the set of event types in which they are interested. - CreateEventOutlet(); Returns a new event outlet to the caller. Replaces iSystem::CreateEventOutlet(). - GetEventOutlet(); Returns the shared event outlet for this particular event queue (for those cases where creating a new one is overkill). Replaces iSystem::GetSystemEventOutlet(). - GetEventCord(); Returns the event cord for a particular category and subcategory. Replaces iSystem::GetEventCord(). -*- The system driver now registers itself as an event listener with the shared event queue just like all other modules which are interested in events. This allows csSystemDriver to listen for the cscmdQuit event in order to set its `Shutdown' variable appropriately. It also allows the HandleEvent() method in subclasses of csSystemDriver to function as expected. Note that this is a merely a temporary state of affairs, as the system driver will soon cease to exist. -*- Converted all applications, plugin modules, and other support code to work with the new event system organization. -*- Because the generic input drivers, csKeyboardDriver, csMouseDriver, and csJoystrickDriver, are tied closely to event outlets, they were also moved from cssys to csutil. -*- The generic input drivers, csKeyboardDriver, csMouseDriver, and csJoystrickDriver, are themselves now responsible for listening for the cscmdFocusChanged event, rather than relying upon the system driver to do so on their behalf. -*- Added new SCF interfaces: iKeyboardDriver, iMouseDriver, iJoystickDriver. -*- Objects implementing iKeyboardDriver, iMouseDriver, and iJoystickDriver are now made available via the shared object registry (iObjectRegistry) under the following names, respectively: crystalspace.driver.input.generic.keyboard crystalspace.driver.input.generic.mouse crystalspace.driver.input.generic.joystick -*- Converted all applications and plugin modules to access the generic drivers directly from the shared object registry rather than calling upon iSystem methods to interact with these objects. Removed all knowledge of these drivers from iSystem and csSystemDriver. -*- Moved the utility functions csParseKeyDef() and csGetKeyDesc() in cskeys.h and cskeys.cpp from cssys to csutil since they are totally generic and have no platform-specific bindings. -*- Fixed a nasty bug in csEventCord where it failed to unlock itself in some cases when posting an event. -*- Fixed a bad bug in csEventCord where it was leaking all events posted to it. -*- Fixed broken logic in iObjectRegistry::Unregister() where it did not actually remove the entry for the object, but instead just left a dangling (and potentially) dead pointer. -*- iObjectRegistry implementation now correctly reference counts the contained objects. It also now protects itself against modification during its own destruction, since some of the objects which it is removing from itself might also get destroyed and might try modifying the registry. -*- Moved mouse driver settings out of system.cfg and into mouse.cfg. csMouseDriver is now responsible for accessing these settings itself rather than relying upon the system driver to do so. -*- Fixed bug in definition of SCF_IMPLEMENT_IBASE table for csSystemDriver. The table neglected to mention that csSystemDriver implements iObjectRegistry and iPluginManager. Added mention of iPlugin which csSystemDriver now implements so that it can listen for events from the event queue. -*- Eliminated compilation warnings in aseie.cpp, dxfie.cpp, hrcie.cpp, ivie.cpp, objie.cpp, povie.cpp, smfie.cpp, stlaie.cpp, and vlaie.cpp about non-virtual destructor. -*- Eliminated compilation warning about unused variable in md2ie.cpp. Also fixed a memory leak. -*- Eliminated compilation warning about `float' assigned to `int' in spr2d.cpp. -*- Fixed broken header-protection macros in intarray.h. -*- Fixed g2dtest so that it once again actually displays a window. This had been broken for quite some time. -*- csSchedule no longer unnecessarily depends upon the system driver. -*- csSchedule no longer publishes its private utility class. -*- The cssys library no longer relies upon the csgeom library. -*- Eliminated several compilation warnings from AWS. Worked around a couple NextStep compiler shortcomings. -*- Rewrote csRectRegion in csgeom so that it no longer relies upon the csutil library. I think it is best if we keep csgeom free of any csutil dependencies. -*- Fixed csRectRegion so that, at destruction time, it no longer leaks each of the csRect structures in its `region' list. -*- Fixed the comment-style in csrectrg.h so that Doxygen will produce proper documentation for csRectRegion. -*- Repaired some overfull and underfull `hbox' warnings reported by TeX for tutorial/wincvs/step1.txi. -*- Finally, note that I eliminated quite a few unnecessary #include directives from the event-related headers and from isys/system.h & cssys/system.h. Since I am unable to test-compile every single port of CS and every driver, port maintainers may have to add an #include statement here and there in platform-specific and/or driver-specific code. |