Date: Sunday August 26, 2001 @ 6:51
Update of /cvsroot/crystal/CS/apps/demosky
In directory usw-pr-cvs1:/tmp/cvs-serv16628/apps/demosky
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
- 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.
- 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,
-*- Objects implementing iKeyboardDriver, iMouseDriver, and
iJoystickDriver are now made available via the shared object registry
(iObjectRegistry) under the following names, respectively:
-*- 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
-*- 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
-*- 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
-*- 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
-*- 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
-*- 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