Levente Uzonyi uploaded a new version of Sound to project The Trunk:
http://source.squeak.org/trunk/Sound-ct.82.mcz
==================== Summary ====================
Name: Sound-ct.82
Author: ct
Time: 3 October 2021, 3:21:00.283874 pm
UUID: 61a3c1d0-1c49-d542-8624-096b1b67e309
Ancestors: Sound-eem.81
Fixes SoundRecorder accesses to CanRecordWhilePlaying by always using the preference getter. As the class variable is nil in current Trunk images, you could not even open the Multimedia category in the parts bin before.
Removes the initialization of CanRecordWhilePlaying to support lazy default values from the preference getter. Also, this initialize method apparently has never been called in the current Trunk image.
=============== Diff against Sound-eem.81 ===============
Item was removed:
- ----- Method: SoundRecorder class>>initialize (in category 'class initialization') -----
- initialize
- "SoundRecorder initialize"
- "Details: Some computers cannot record and playback sound at the same time. If CanRecordWhilePlaying is false, then the SoundRecorder alternates between recording and playing. If it is true, sounds can be playing during recording."
-
- CanRecordWhilePlaying := false.
- !
Item was changed:
----- Method: SoundRecorder>>pause (in category 'recording controls') -----
pause
"Go into pause mode. The record level continues to be updated, but no sound is recorded."
paused := true.
((currentBuffer ~~ nil) and: [nextIndex > 1])
ifTrue: [self emitPartialBuffer.
self allocateBuffer].
soundPlaying ifNotNil: [
soundPlaying pause.
soundPlaying := nil].
"Note: there can be problems if canRecordWhilePlaying is true. Recorders which only pause will inhibit other recorders from recording. I chose to make #stopPlaying unconditional in a subclass. The same might be appropriate here at the expense of making recorders resumable"
+ self class canRecordWhilePlaying ifFalse: [self stopRecording].!
- CanRecordWhilePlaying ifFalse: [self stopRecording].
- !
Item was changed:
----- Method: SoundRecorder>>resumeRecording (in category 'recording controls') -----
resumeRecording
"Continue recording from the point at which it was last paused."
self flag: #bob.
"Note: If canRecordWhilePlaying is true, then recordings may never get started (at least by this method). One possibility, used in a subclass, is to make the #startPlaying unconditional. Another would be to use #startPlaying instead of #resumePlaying in appropriate cases"
+ self class canRecordWhilePlaying ifFalse: [self startRecording].
- CanRecordWhilePlaying ifFalse: [self startRecording].
paused := false.
!
Item was changed:
----- Method: SoundRecorder>>startRecording (in category 'recording controls') -----
startRecording
"Turn on the sound input driver and start the recording process. Initially, recording is paused.
If the primStartRecordingDesiredSampleRate:... fails it almost certainly means we have no usable
sound input device. Rather than having the prim raise a failure error we let it quietly do nothing
(since I hate trying to debug errors inside a critical block) and check the actual sampling rate later.
If the sampling rate is 0 we know the startup failed and raise an application level Signal to let any
user code know about the problem.
You might think we should also use the stopRecording message to close things down cleanly but
that simply results in astorm of attempts to start recording so it is simpler to let it be deluded. An
attempts to start recording will repeat the test and thereby handle any plug-in hardware etc."
recordLevel ifNil: [recordLevel := 0.5]. "lazy initialization"
+ self class canRecordWhilePlaying ifFalse: [SoundPlayer shutDown: true].
- CanRecordWhilePlaying ifFalse: [SoundPlayer shutDown: true].
recordProcess ifNotNil: [self stopRecording].
paused := true.
meteringBuffer := SoundBuffer newMonoSampleCount: 1024.
meterLevel := 0.
self allocateBuffer.
Smalltalk newExternalSemaphoreDo: [ :semaphore :index |
bufferAvailableSema := semaphore.
self primStartRecordingDesiredSampleRate: samplingRate asInteger
stereo: stereo
semaIndex: index ].
RecorderActive := true.
samplingRate := self primGetActualRecordingSampleRate.
samplingRate = 0 ifTrue: [ Warning signal: 'SoundRecorder: unable to connect to sound input device'].
self primSetRecordLevel: (1000.0 * recordLevel) asInteger.
recordProcess := [self recordLoop] newProcess.
recordProcess priority: Processor userInterruptPriority.
recordProcess resume!
Trying to load FFI to check my old GPIO hardware driving code.
It needs FFI. FFI has a ConfigurationOfxxxx. Load that.
Run `ConfigurationOfFFI load`
Nothing - because it is trying to do the #ensureMetacello thing and wants to fetch Gofer from http://seaside.gemstone.com/ss/metacello which seems to be dead. Bit of a problem.
If I dig a bit I find that it seems we want to load ConfigurationOfFFI>>#version20:
Loading the 'FFI-Pools-mt.31' , 'FFI-Kernel-mt.180' , 'FFI-Libraries-mt.2' & 'FFI-Callbacks-mt.25'; seems to work, then 'FFI-Tools-mt.37' is ok.
Try to run the FFI tests and BOOM! So evidently sometihng isn't terribly happy.
Going through all the install again to at least try my actual package results in a syntax error
id: i i2cClose: handle
"Disconnect from the i2c device, freeing the handle etc.
returns 0 if ok, otherwise GpioBadHandle"
#<cdecl: long "Nothing more expected ->"'i2c_close' (long ulong) module: 'pigpiod_if2'>
^self externalCallFailed
Now so far as I can see it appears that the initial # in front of the <cdecl is no longer accepted? Is that the case?
tim
--
tim Rowledge; tim(a)rowledge.org; http://www.rowledge.org/tim
A hacker does for love what others would not do for money.
A new version of Tools was added to project The Inbox:
http://source.squeak.org/inbox/Tools-ct.1066.mcz
==================== Summary ====================
Name: Tools-ct.1066
Author: ct
Time: 5 October 2021, 12:28:27.635947 am
UUID: 44c95b85-fb19-4847-90a9-19043e1a4377
Ancestors: Tools-eem.1064
Updates well known processes in the process browser to make the changes from Tools-eem.1016 visible. :-)
=============== Diff against Tools-eem.1064 ===============
Item was changed:
+ (PackageInfo named: 'Tools') postscript: 'ProcessBrowser registerWellKnownProcesses.'!
- (PackageInfo named: 'Tools') postscript: 'ChangeSorter allSubInstancesDo: [:sorter |
- (sorter instVarNamed: ''contentsAreStyleable'') ifNil: [
- sorter instVarNamed: ''contentsAreStyleable'' put: true]].'!
Hi all,
wondering about how to improve the communication of treated inbox versions. Currently, the treatment of an inbox version is not documented anywhere, you can just observe and observe again source.squeak.org/treated in order to know whether your proposal is still pending review (or, more conveniently - beware, self-promotion! -, you can do this via Squeak Inbox Talk).
How complicated would it be to set up a new mailing list, treated(a)lists.squeakfoundation.org, analogously to packages(a)squeakfoundation.org, and have the SqueakSource server notify subscribers about any treated inbox version? I then would also be able to include this information into Squeak Inbox Talk, which currently is unable to display the timestamp of a treatment.
Best,
Christoph
---
Sent from Squeak Inbox Talk
A new version of System was added to project The Inbox:
http://source.squeak.org/inbox/System-ct.1244.mcz
==================== Summary ====================
Name: System-ct.1244
Author: ct
Time: 3 October 2021, 5:35:50.467083 pm
UUID: 3b80c095-2453-ef4a-a908-395ee97df1ea
Ancestors: System-mt.1241
Complements ST80-ct.272.
=============== Diff against System-mt.1241 ===============
Item was added:
+ ----- Method: Project>>acceptProjectDetails: (in category 'file in/out') -----
+ acceptProjectDetails: details
+ "To be overridden by subclasses."!
A new version of ST80 was added to project The Inbox:
http://source.squeak.org/inbox/ST80-ct.272.mcz
==================== Summary ====================
Name: ST80-ct.272
Author: ct
Time: 3 October 2021, 5:35:19.688083 pm
UUID: 94c1e469-375e-a140-820f-b5886b989be5
Ancestors: ST80-ct.269
Moves up #acceptProjectDetails: stub from MVCProject to project. Revises ST80-eem.249.
=============== Diff against ST80-ct.269 ===============
Item was removed:
- ----- Method: MVCProject>>acceptProjectDetails: (in category 'file in/out') -----
- acceptProjectDetails: details
- "Ignored; here for MorphicProject compatibility."!