[Vm-dev] VM Maker: VMMakerUI-eem.35.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Jan 2 21:22:29 UTC 2021


Eliot Miranda uploaded a new version of VMMakerUI to project VM Maker:
http://source.squeak.org/VMMaker/VMMakerUI-eem.35.mcz

==================== Summary ====================

Name: VMMakerUI-eem.35
Author: eem
Time: 2 January 2021, 1:22:27.912176 pm
UUID: c7b0db6a-9e59-4a22-a650-35f2efbdb0ad
Ancestors: VMMakerUI-eem.34

Fix event delivery for 32-bit simulations.  The event timestamp must be truncated.  Pull queueForwardedEvent: into this package.

=============== Diff against VMMakerUI-eem.34 ===============

Item was changed:
  ----- Method: SimulatorEventTransformer>>degenerateKeyboardEvent:for: (in category 'event transformation') -----
  degenerateKeyboardEvent: aMorphicEvent for: aClient
  	"Convert the keyboard event into a low-level event for the VM simulator (aClient).
  	 See HandMorph>>generateKeyboardEvent and EventSensor class comment"
  	aClient queueForwardedEvent:
  		{	EventTypeKeyboard.
+ 			aClient eventTimestamp.
- 			aClient ioUTCMicroseconds // 1000.
  			aMorphicEvent keyValue.		"<--this is wrong. See nextCharFrom:firstEvt: for what needs to be undone. hooo boy"
  			aMorphicEvent type caseOf: {
  						[#keyDown]	->	[EventKeyDown].
  						[#keyUp]		->	[EventKeyUp].
  						[#keystroke]	->	[EventKeyChar] }.
  			modifiers.
  			aMorphicEvent keyValue.
  			0.
  			self windowIndex }!

Item was changed:
  ----- Method: SimulatorEventTransformer>>degenerateMouseEvent:for: (in category 'event transformation') -----
  degenerateMouseEvent: aMorphicEvent for: aClient
  	"Convert the mouse event into low-level events for the VM simulator (aClient).  Filter-out mouse moves,
  	 and generate a fake mouse move before each button press.
  	 See HandMorph>>generateMouseEvent"
  	| translated newMouseEvent |
  	modifiers := aMorphicEvent buttons >> 3. "Sad, but modifiers come in on mouse move events..."
  
  	"filter-out mouse moves unless buttons are pressed, so simulation doesn't get window leave events when we leave its window"
  	aMorphicEvent type == #mouseMove ifTrue:
  		[(aClient displayView bounds containsPoint: aMorphicEvent position) ifFalse:
  			[^self]].
  
  	translated := aMorphicEvent position - aClient displayView bounds origin.
  	newMouseEvent := {	EventTypeMouse.
+ 							aClient eventTimestamp.
- 							aClient ioUTCMicroseconds // 1000.
  							translated x.
  							translated y.
  							aMorphicEvent buttons bitAnd: 7.	"thanks Ron T."
  							modifiers.		"Thanks dtl"
  							aMorphicEvent class == MouseButtonEvent ifTrue: [aMorphicEvent nClicks] ifFalse: [0].
  							self windowIndex }.
  	aClient eventQueue withinPeekLastDo:
  		[:event|
  		"Squash mouse move events..."
  		(#[1 5 6 7 8] allSatisfy: [:index| (event at: index) = (newMouseEvent at: index)]) ifTrue:
  			[^event replaceFrom: 2 to: 4 with: newMouseEvent startingAt: 2]].
  	aClient queueForwardedEvent: newMouseEvent!

Item was added:
+ ----- Method: StackInterpreter>>eventTimestamp (in category '*VMMakerUI-user interface') -----
+ eventTimestamp
+ 	<doNotGenerate>
+ 	^BytesPerWord = 4
+ 		ifTrue: [self ioUTCMicroseconds // 1000 bitAnd: MillisecondClockMask]
+ 		ifFalse: [self ioUTCMicroseconds // 1000]!

Item was added:
+ ----- Method: StackInterpreter>>queueForwardedEvent: (in category '*VMMakerUI-user interface') -----
+ queueForwardedEvent: event
+ 	"SimulatorMorphicModel browse"
+ 	<doNotGenerate>
+ 	self eventQueue nextPut: event.
+ 	self inputSemaphoreIndex
+ 		ifNotNil:
+ 			[:isi| self signalSemaphoreWithIndex: isi]
+ 		ifNil:
+ 			[nextPollUsecs := self ioUTCMicroseconds.
+ 			 self forceInterruptCheck]!



More information about the Vm-dev mailing list