> 
> On 23 November 2013 09:07, Stéphane Ducasse <stephane.duca...@inria.fr> wrote:
> I really think that NativeBoost MUST HAVE a decent documentation.
> 
> i agree. i need to invest into it.

we should build a working group with pomodoro around it.
JB and Damien could help.
I can play the naive idiot and editor but I cannot be the driven force because 
the gap to learn will cost me too much energy.
But this is on my todo to read the tutorial of laurent.


Stef
>  
> It is a central part of Pharo and Igor you should do something about it.
> If I would know I would have written a chapter on it but I cannot because I 
> DO NOT KNOW.
> 
> Stef
> 
>> 
>> 
>> 
>> On 21 November 2013 22:40, Sean P. DeNigris <s...@clipperadams.com> wrote:
>> I'm wrapping the FMOD cross-platform audio library. The code is MIT and lives
>> at http://smalltalkhub.com/#!/~SeanDeNigris/FMOD
>> 
>> ========
>> Problem #1:
>> ========
>> 
>> I'm calling into the FMOD library with:
>> primStoreIsPlaying: channelHandle in: isPlayingHandle
>>         <primitive: #primitiveNativeCall module: #NativeBoostPlugin>
>> 
>>         "FMOD_RESULT FMOD_Channel_IsPlaying(
>>                 FMOD_CHANNEL *channel,
>>                 bool *isplaying);"
>> 
>>         ^ self nbCall: #(FMOD_RESULT FMOD_Channel_IsPlaying(NBExternalAddress
>> channel, NBExternalAddress isPlayingHandle)).
>> 
>> I call the above with:
>>     isPlaying
>>         | isPlaying |
>>         isPlaying := NBExternalAddress new.
>>         self primStoreIsPlaying: channel in: isPlaying.
>>         ^ isPlaying value > 0.
>> 
>> isPlaying is always 0. The method works directly from C with:
>> int isPlaying = 1;
>>     while (isPlaying) {
>>         FMOD_Channel_IsPlaying(channel, &isPlaying);
>>     }
>> 
>> I also tried changing the callout signature to "... bool* isPlayingHandle)"
>> and passing "isPlaying := true." instead of using the NBExternalAddress
>> stuff.
>> 
>> err.. again, you must pass an address where value will be stored, 
>> 
>> ^ self nbCall: #(FMOD_RESULT FMOD_Channel_IsPlaying(
>> NBExternalAddress channel, NBExternalAddress * isPlayingHandle)).
>> otherwise you passing NULL pointer, and i quite surprised it not segfaults 
>> when you call it like that (looks like they have a check in the library )
>>  
>>  you can also use NBExternalTypeValue for that:
>> 
>> boolValueClass := NBExternalTypeValue ofType: 'bool'. "sure thing, creating 
>> anonymous class for each call is overkill, this should be done once, 
>> somewhere else"
>> 
>> boolValue := boolValueClass new.
>> 
>> self callTheThingWith: boolValue.
>> 
>> boolValue value ifTrue: [... blah]
>> 
>> (and this will work, assuming you have bool* in signature for this argument).
>> 
>> I have a few more questions, but this is the most pressing as it's holding
>> up any further development.
>> 
>> Thanks!
>> 
>> 
>> 
>> -----
>> Cheers,
>> Sean
>> --
>> View this message in context: 
>> http://forum.world.st/NativeBoost-Questions-while-wrapping-FMOD-tp4724116.html
>> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
>> 
>> 
>> 
>> 
>> -- 
>> Best regards,
>> Igor Stasenko.
> 
> 
> 
> 
> -- 
> Best regards,
> Igor Stasenko.

Reply via email to