EventSensor revision notes
ducasse
ducasse at iam.unibe.ch
Thu Feb 12 08:09:21 UTC 2004
thanks tim
this looks indeed serious.
Just the name of CurrentProjectRefactoring reveals that this class
should not survive
Stef
On 12 févr. 04, at 06:03, Timothy Rowledge wrote:
> This is not a changeset of code implementing a new sensor class. I
> don't have time to tackle that right now! However, since I had been
> looking at the classes and worrying about them recently I though I
> should write down my thoughts in the hope that someone might find them
> useful.
>
>
> InputSensor/EventSensor notes
>
> Variables
>
> InterruptSemaphore - EventSensor has interruptSemaphore as an ivar as
> well. Mixed initialise and references (see users of both).
> EventPollFrequency - unused after Andreas' removal of inputProcess.
> Remove.
> mouseButtons - used to hold latest state of mouse buttons. Updated in
> processMouseEvent: and processKeyboardEvent:
> mousePosition - holds latest position of mouse. Updated in
> processMouseEvent:
> keyboardBuffer - appears to be unused given event handling VM.
> primKbdPeek & Next seem to work from eventQueue. procesKeyboardEvent:
> explicitly ignores when eventQueue is non-nil (always)
> interruptKey - see note B.
> interruptSemaphore - signalled when interrupt key pressed. Current VMs
> seem to do that and pre-empt the processEvent: method? See also
> InterruptSemaphore class var in InputSensor.
> eventQueue - seems to be used in all cases now.
> inputSemaphore - seems to be used ony as a flag for the VM. Some VMs
> signal it for each event, some for 'some events happened' and some
> don't bother. Purpose?
>
> Methods
>
> EventSensor> startUp
> - sends #shutdown but EventSensor>shutdown does not send super
> shutdown.
> InputSensor>shutDown terminates the InterruptWatcherProcess twice but
> seems to be unused. InputSensor>installInterruptWatcher seems to
> handle it ok.
> - sends super startUp to use InputSensor>startUp which
> installInterruptWatcher (which uses the class var form of the
> interruptSem reference above).
> - sends flushAllButDandDEvents, which the #initialize has already done.
>
> EventSensor>initialize
> - sets interruptKey but doesn't use prim to tell VM about it. The prim
> method claims to be obsolete. VMs seem to still have it. It ought to
> be set from a platform preference or attribute or similar.
> - it further appears to have old back-compat code wrt
> specialObjectsArray? Should the interrupt sem still be there?
> - sends #flushAllButDandDEvents AND EventSensor>startUp sends
> Smalltalk isMorphic ifTrue:[self flushAllButDandDEvents]. Seems a bit
> messed up.
>
> EventSensor>primGetNextEvent: - are there any VMs that do not have
> event prims? If not, dump the backup code and stop having to support
> it.
>
> EventSensor>processKeyboardEvent: - since
> EventSensor>flushAllButDandDEvents makes sure that there is always an
> eventQueue, we can never get to code that expects it to be nil. See
> #queueEvent:, primKbdPeek, processKeyboardEvent:, primKbdNext,
> flushEvents, flushNonKbdEvents, peekEvent, nextEvent (implies
> nextEventSynthesized should go) and of course flushAllButDandDEvents.
>
> Notes
>
> A) no need for class variable InterruptSemaphore.
> B) setting of interruptKey and the prims to set it and the sem should
> be looked into
> C) if the sensor is really a singleton, then make it a clean one.
> Somebody needs to exorcise 'CurentProjectRefactoring'
>
>
More information about the Squeak-dev
mailing list
|