2.) The various Run* routines were made more general. This allowed me to move them completely within the nsCBaseLoop code rather than have them duplicated across the different Base Loop Typed classes. This avoids the cut and pasting of code, that will probably be tweaked in the future.
3.) To support the new Run* routines, I have added a RetrieveNextEvent and then a PlatformRetrieveNextEvent. The first is implemented in nsCBaseLoop. This was added to facilitate ordering of event retrieval in the near future (ie, pulling system events before normal events, or pulling PLEvents etc.) The second function is one that platform code must override. This is different for each loop type. Basically this is supposed to be whatever it takes for a given implementation to pull the next event off the queue for the given loop type. So in the Windows world, this function calls GetMessage() for the Thread and App loop types and then PeekMessage() with PM_REMOVE set for the Breath loop type.
This code is compiled but not used by the main build. A=chofmann