EXPORT(sqInt) primitiveSoundPlaySamples(void) { sqInt framesPlayed; sqInt frameCount; usqInt *buf; sqInt startIndex; sqInt _return_value; frameCount = interpreterProxy->stackIntegerValue(2); interpreterProxy->success(interpreterProxy->isWords(interpreterProxy->stackValue(1))); buf = ((unsigned *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(1)))); startIndex = interpreterProxy->stackIntegerValue(0); if (interpreterProxy->failed()) { return null; } interpreterProxy->success((startIndex >= 1) && (((startIndex + frameCount) - 1) <= (interpreterProxy->slotSizeOf((oopForPointer( buf ) - BASE_HEADER_SIZE))))); if (!(interpreterProxy->failed())) { framesPlayed = snd_PlaySamplesFromAtLength(frameCount, (void *)buf, startIndex - 1); interpreterProxy->success(framesPlayed >= 0); } _return_value = interpreterProxy->positive32BitIntegerFor(framesPlayed); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(4, _return_value); return null; }
primitiveSoundPlaySamples(void) { // SoundPlugin>>#primitiveSoundPlaySamples unsigned *buf; sqInt frameCount; sqInt framesPlayed; sqInt startIndex; sqInt _return_value; frameCount = stackIntegerValue(2); success(isWords(stackValue(1))); buf = ((unsigned *) (firstIndexableField(stackValue(1)))); startIndex = stackIntegerValue(0); if (failed()) { return null; } success((startIndex >= 1) && (((startIndex + frameCount) - 1) <= (slotSizeOf(((sqInt)(long)(buf) - BaseHeaderSize))))); if (!(failed())) { framesPlayed = snd_PlaySamplesFromAtLength(frameCount, (void *)buf, startIndex - 1); success(framesPlayed >= 0); } _return_value = positive32BitIntegerFor(framesPlayed); if (failed()) { return null; } popthenPush(4, _return_value); return null; }