Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.809.mcz
==================== Summary ====================
Name: System-mt.809
Author: mt
Time: 6 April 2016, 10:54:56.661095 am
UUID: 6cbea751-999b-284a-a834-62df239c3892
Ancestors: System-mt.808
Move #isMorphic into Morphic extension.
=============== Diff against System-mt.808 ===============
Item was removed:
- ----- Method: Project>>isMorphic (in category 'accessing') -----
- isMorphic
- "Complexity is because #isMVC is lazily installed"
- ^ world isInMemory
- ifTrue: [world isMorph]
- ifFalse: [(self projectParameters at: #isMVC ifAbsent: [false]) not]!
Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.808.mcz
==================== Summary ====================
Name: System-mt.808
Author: mt
Time: 6 April 2016, 10:52:46.735095 am
UUID: be179802-28c2-f942-afbf-ddbe14153684
Ancestors: System-mt.807
Temporary change to not lock up the system while moving #isMorphic into an extension category in Project.
=============== Diff against System-mt.807 ===============
Item was changed:
----- Method: SmalltalkImage>>isMorphic (in category 'snapshot and quit') -----
isMorphic
+ "Temporary implementation."
+
+ ^ (Project current respondsTo: #isMorphic) not or: [Project current isMorphic]!
-
- ^ Project current isMorphic!
Marcel Taeumel uploaded a new version of Sound to project The Trunk:
http://source.squeak.org/trunk/Sound-mt.49.mcz
==================== Summary ====================
Name: Sound-mt.49
Author: mt
Time: 6 April 2016, 10:28:46.469834 am
UUID: a2a341f2-f4d3-b946-a104-0e5f59c1554c
Ancestors: Sound-mt.48
Adds code for conveniently playing MIDIs stored in the file system. Compares with Form class.
=============== Diff against Sound-mt.48 ===============
Item was added:
+ ScorePlayer subclass: #MIDISound
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Sound-Scores'!
+
+ !MIDISound commentStamp: 'mt 4/6/2016 10:19' prior: 0!
+ This empty class just makes the fact explicit that this object is a sound object that needs can be played. Just like other sounds.
+
+ Example: (MIDISound fromFileNamed: 'some.mid') play!
Item was added:
+ ----- Method: ScorePlayer class>>fromFileNamed: (in category 'instance creation') -----
+ fromFileNamed: fileName
+
+ ^ self onScore: (MIDIFileReader scoreFromFileNamed: fileName)!
Marcel Taeumel uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-mt.1013.mcz
==================== Summary ====================
Name: Kernel-mt.1013
Author: mt
Time: 6 April 2016, 10:27:04.586834 am
UUID: b0488a79-3625-4d40-8aad-1cb2b3ad4936
Ancestors: Kernel-mt.1012
Simplifies code for stopping the sound service on CMD+Dot
=============== Diff against Kernel-mt.1012 ===============
Item was changed:
----- Method: EventSensor>>userInterruptWatcher (in category 'user interrupts') -----
userInterruptWatcher
"Wait for user interrupts and open a notifier on the active process when one occurs."
[ InterruptSemaphore wait.
Display deferUpdates: false.
+ SoundService stop.
- SoundService defaultOrNil ifNotNil: [ : soundSystem | soundSystem shutDown ].
Smalltalk handleUserInterrupt ] repeat!
Marcel Taeumel uploaded a new version of Sound to project The Trunk:
http://source.squeak.org/trunk/Sound-mt.48.mcz
==================== Summary ====================
Name: Sound-mt.48
Author: mt
Time: 6 April 2016, 10:26:04.738834 am
UUID: 9b0c8653-4931-ae42-a0ef-e0ca761dc54e
Ancestors: Sound-tpr.47
Fixes sound playing in the way that it goes through the sound service to ensure sound preferences.
=============== Diff against Sound-tpr.47 ===============
Item was changed:
----- Method: AbstractSound>>play (in category 'playing') -----
play
+ "Play this sound to the sound output port in real time. Use the sound service to check for sound preferences."
- "Play this sound to the sound output port in real time."
+ SoundService play: self.!
- SoundPlayer playSound: self.!
Item was changed:
----- Method: AbstractSound>>playAndWaitUntilDone (in category 'playing') -----
playAndWaitUntilDone
"Play this sound to the sound ouput port and wait until it has finished playing before returning."
+ self play.
- SoundPlayer playSound: self.
[self samplesRemaining > 0] whileTrue.
(Delay forMilliseconds: 2 * SoundPlayer bufferMSecs) wait. "ensure last buffer has been output"
!
Item was changed:
----- Method: BaseSoundSystem>>beep (in category 'playing') -----
beep
"There is sound support, so we use the default
sampled sound for a beep."
+ ^ SampledSound beep!
- SoundService soundEnabled ifTrue: [
- SampledSound beep]!
Item was changed:
----- Method: BaseSoundSystem>>playSampledSound:rate: (in category 'playing') -----
playSampledSound: samples rate: rate
+ ^ (SampledSound samples: samples samplingRate: rate) play!
- SoundService soundEnabled ifTrue: [
- (SampledSound samples: samples samplingRate: rate) play]!
Item was added:
+ ----- Method: BaseSoundSystem>>playSound: (in category 'playing') -----
+ playSound: sound
+
+ SoundPlayer playSound: sound.
+ ^ sound!
Item was changed:
----- Method: BaseSoundSystem>>playSoundNamed: (in category 'playing') -----
playSoundNamed: soundName
"There is sound support, so we play the given sound."
+ ^ SampledSound playSoundNamed: soundName asString!
- SoundService soundEnabled ifTrue: [
- SampledSound playSoundNamed: soundName asString]!
Item was changed:
----- Method: BaseSoundSystem>>playSoundNamed:ifAbsentReadFrom: (in category 'playing') -----
playSoundNamed: soundName ifAbsentReadFrom: aifFileName
+ (SampledSound soundNames includes: soundName) ifFalse: [
+ (FileDirectory default fileExists: aifFileName) ifTrue: [
+ SampledSound
+ addLibrarySoundNamed: soundName
+ fromAIFFfileNamed: aifFileName]].
+
+ (SampledSound soundNames includes: soundName) ifTrue: [
+ ^ SampledSound playSoundNamed: soundName].
+
+ ^ nil!
- SoundService soundEnabled ifTrue: [
- (SampledSound soundNames includes: soundName) ifFalse: [
- (FileDirectory default fileExists: aifFileName) ifTrue: [
- SampledSound
- addLibrarySoundNamed: soundName
- fromAIFFfileNamed: aifFileName]].
- (SampledSound soundNames includes: soundName) ifTrue: [
- SampledSound playSoundNamed: soundName]]!
Item was changed:
----- Method: BaseSoundSystem>>playSoundNamedOrBeep: (in category 'playing') -----
playSoundNamedOrBeep: soundName
"There is sound support, so we play the given sound
instead of beeping."
+ ^ self playSoundNamed: soundName!
- SoundService soundEnabled ifTrue: [
- ^self playSoundNamed: soundName]!
Hi Marcel,
> On Apr 2, 2016, at 8:50 AM, commits(a)source.squeak.org wrote:
>
> Marcel Taeumel uploaded a new version of Kernel to project The Trunk:
> http://source.squeak.org/trunk/Kernel-mt.1009.mcz
>
> ==================== Summary ====================
>
> Name: Kernel-mt.1009
> Author: mt
> Time: 2 April 2016, 12:23:20.21041 pm
> UUID: bd1b45d5-cb4d-41b0-890b-c8f70de70b1c
> Ancestors: Kernel-ul.1008
>
> Recent CogVMs do not yield preempted processes. Fixes the behavior where "[ [] repeat] fork" could not be interrupted anymore via CMD+. and hence locked the image.
Just to be clear, this is not a VM change. The VM supports either yielding on preemption (the original behaviour) or preemption not yielding (the new, IMO correct, behaviour), based on a flag stored in the image header. So your comment should have read
Squeak 5, as of Kernel-eem.??? does not yield preempted processes. Fixes the behavior where "[ [] repeat] fork" could not be interrupted anymore via CMD+. and hence locked the image.
I'll figure out which version when "away from my phone" ;-)
> =============== Diff against Kernel-ul.1008 ===============
>
> Item was changed:
> ----- Method: ProcessorScheduler>>preemptedProcess (in category 'accessing') -----
> preemptedProcess
> "Return the process that the currently active process just preempted."
> +
> + self activeProcess priority to: 1 by: -1 do: [:priority |
> + (quiescentProcessLists at: priority) ifNotEmpty: [:list |
> + ^ Smalltalk processPreemptionYields
> + ifTrue: [list last]
> + ifFalse: [list first]]].
> + ^ nil
> +
> - | list |
> - activeProcess priority to: 1 by: -1 do:[:priority|
> - list := quiescentProcessLists at: priority.
> - list isEmpty ifFalse:[^list last].
> - ].
> - ^nil
> -
> "Processor preemptedProcess"!
>
>
On Tue, 5 Apr 2016, commits(a)source.squeak.org wrote:
> Marcel Taeumel uploaded a new version of Kernel to project The Trunk:
> http://source.squeak.org/trunk/Kernel-mt.1012.mcz
>
> ==================== Summary ====================
>
> Name: Kernel-mt.1012
> Author: mt
> Time: 5 April 2016, 10:42:29.505517 am
> UUID: 83d8a4a7-a80d-1848-90d0-d10abf9728f7
> Ancestors: Kernel-ul.1011
>
> Restore clean-up code, which got lost with the introduction of object events long time ago (around Squeak 3.7 or so).
>
> Break dependency to #releaseActionMap implemented in the System package.
>
> =============== Diff against Kernel-ul.1011 ===============
>
> Item was changed:
> ----- Method: Object>>release (in category 'dependents access') -----
> release
> "Remove references to objects that may refer to the receiver. This message
> should be overridden by subclasses with any cycles, in which case the
> subclass should also include the expression super release."
>
> + self breakDependents.
> + (self respondsTo: #releaseActionMap) ifTrue: [self releaseActionMap].!
Is #respondsTo: necessary? Object seems to implement #releaseActionMap.
Levente
> - self releaseActionMap!
>
>
>