/*
 * Class:     org_jsfml_graphics_Text
 * Method:    nativeSetExPtr
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_org_jsfml_graphics_Text_nativeSetExPtr (JNIEnv *env, jobject obj) {
    JSFML::NativeObject::SetExPointer(env, obj, org_jsfml_internal_ExPtr_DRAWABLE,
        dynamic_cast<sf::Drawable*>(THIS(sf::Text)));

    JSFML::NativeObject::SetExPointer(env, obj, org_jsfml_internal_ExPtr_TRANSFORMABLE,
        dynamic_cast<sf::Transformable*>(THIS(sf::Text)));
}
/*
 * Class:     sfml_graphics_RectangleShape
 * Method:    nativeSetExPtr
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_sfml_graphics_RectangleShape_nativeSetExPtr (JNIEnv *env, jobject obj) {
    JSFML::NativeObject::SetExPointer(env, obj, sfml_internal_ExPtr_DRAWABLE,
        dynamic_cast<sf::Drawable*>(THIS(sf::RectangleShape)));

    JSFML::NativeObject::SetExPointer(env, obj, sfml_internal_ExPtr_TRANSFORMABLE,
        dynamic_cast<sf::Transformable*>(THIS(sf::RectangleShape)));

    JSFML::NativeObject::SetExPointer(env, obj, sfml_internal_ExPtr_SHAPE,
        dynamic_cast<sf::Shape*>(THIS(sf::RectangleShape)));
}
/*
 * Class:     org_jsfml_graphics_RenderTexture
 * Method:    nativeMapCoordsToPixel
 * Signature: (JLorg/jsfml/graphics/ConstView;)J
 */
JNIEXPORT jlong JNICALL Java_org_jsfml_graphics_RenderTexture_nativeMapCoordsToPixel
    (JNIEnv *env, jobject obj, jlong point, jobject view) {

    return JSFML::Intercom::encodeVector2i(THIS(sf::RenderTexture)->mapCoordsToPixel(
            JSFML::Intercom::decodeVector2f(point),
            *JSFML::NativeObject::GetPointer<sf::View>(env, view)));
}
Esempio n. 4
0
/**
 * Wrapper API to make StringEnumeration look like UEnumeration.
 */
static const char* U_CALLCONV
ustrenum_next(UEnumeration* en,
              int32_t* resultLength,
              UErrorCode* ec)
{
    return THIS(en)->next(resultLength, *ec);
}
Esempio n. 5
0
static OSStatus rdpsnd_ios_monitor_cb(
				      void *inRefCon,
				      AudioUnitRenderActionFlags *ioActionFlags,
				      const AudioTimeStamp *inTimeStamp,
				      UInt32 inBusNumber,
				      UInt32 inNumberFrames,
				      AudioBufferList *ioData
				      )
{
	
	rdpsndIOSPlugin *p = THIS(inRefCon);
	
	//if ( *ioActionFlags == kAudioUnitRenderAction_PostRender )
	if ( *ioActionFlags == kAudioUnitRenderAction_PostRender )
	{
		
		
		/*
		 printf("postRender Bus: %d inTimeStamp: %llu flags(%d) Frames: %d Buffers: %d\n",
		 (unsigned int)inBusNumber,
		 inTimeStamp->mHostTime,
		 (unsigned int)inTimeStamp->mFlags,
		 (unsigned int)inNumberFrames,
		 (unsigned int)ioData->mNumberBuffers);
		 */
		
		//printf("Played %d frames ", p->frameCnt);
		
		rdpsnd_count_frames(p);
		
	}
	
	return noErr;
}
Esempio n. 6
0
void
setCgsFont(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId, XTermFonts * font)
{
    CgsCache *me;

    if ((me = myCache(xw, cgsWin, cgsId)) != 0) {
        if (!HaveFont(font)) {
            if (cgsId != gcNorm)
                (void) getCgsGC(xw, cgsWin, gcNorm);
#ifndef NO_ACTIVE_ICON
            if (cgsWin == &(TScreenOf(xw)->iconVwin))
                font = &(TScreenOf(xw)->fnt_icon);
            else
#endif
                font = &(TScreenOf(xw)->fnts[fNorm]);
        }
        if (HaveFont(font) && okFont(font->fs)) {
            TRACE2(("setCgsFont next: %s for %s slot %p, gc %#x\n",
                    traceFont(font), traceCgsEnum(cgsId),
                    me, (unsigned) THIS(gc)));
            TRACE2(("...next font was %s\n", traceFont(NEXT(font))));
            NEXT(font) = font;
            me->mask |= GCFont;
        } else {
            /* EMPTY */
            TRACE2(("...NOT updated font for %s\n",
                    traceCgsEnum(cgsId)));
        }
    }
}
Esempio n. 7
0
/*
 * Class:     sfml_audio_SoundBuffer
 * Method:    nativeGetSamples
 * Signature: (ILjava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_sfml_audio_SoundBuffer_nativeGetSamples
    (JNIEnv *env, jobject obj, jint num, jobject buffer) {

    const sf::Int16 *samples = THIS(sf::SoundBuffer)->getSamples();
    jshort *jsamples = (jshort*)env->GetDirectBufferAddress(buffer);

    memcpy(jsamples, samples, 2 * num);
}
Esempio n. 8
0
/*
 * Class:     sfml_audio_SoundBuffer
 * Method:    nativeSaveToFile
 * Signature: (Ljava/lang/String;)Z
 */
JNIEXPORT jboolean JNICALL Java_sfml_audio_SoundBuffer_nativeSaveToFile (JNIEnv *env, jobject obj, jstring fileName) {
	const char *utf8 = env->GetStringUTFChars(fileName, NULL);

    jboolean result = THIS(sf::SoundBuffer)->saveToFile(std::string(utf8));
	env->ReleaseStringUTFChars(fileName, utf8);

    return result;
}
Esempio n. 9
0
/*
 * Copy the parameters (except GC of course) from one cache record to another.
 */
void
copyCgs(XtermWidget xw, VTwin *cgsWin, CgsEnum dstCgsId, CgsEnum srcCgsId)
{
    if (dstCgsId != srcCgsId) {
        CgsCache *me;

        if ((me = myCache(xw, cgsWin, srcCgsId)) != 0) {
            TRACE(("copyCgs from %s to %s\n",
                   traceCgsEnum(srcCgsId),
                   traceCgsEnum(dstCgsId)));
            TRACE2(("copyCgs from %s (me %p, fg %s, bg %s, cset %s) to %s {{\n",
                    traceCgsEnum(srcCgsId),
                    me,
                    tracePixel(xw, THIS(fg)),
                    tracePixel(xw, THIS(bg)),
                    traceCSet(THIS(cset)),
                    traceCgsEnum(dstCgsId)));
            setCgsCSet(xw, cgsWin, dstCgsId, THIS(cset));
            setCgsFore(xw, cgsWin, dstCgsId, THIS(fg));
            setCgsBack(xw, cgsWin, dstCgsId, THIS(bg));
            setCgsFont(xw, cgsWin, dstCgsId, THIS(font));
            TRACE2(("...copyCgs }}\n"));
        }
    }
}
Esempio n. 10
0
/*
 * Return the font for the given GC.
 */
XTermFonts *
getCgsFont(XtermWidget xw, VTwin *cgsWin, GC gc)
{
    int n;
    XTermFonts *result = 0;

    for_each_gc(n) {
        CgsCache *me;

        if ((me = myCache(xw, cgsWin, (CgsEnum) n)) != 0) {
            if (THIS(gc) == gc) {
                result = THIS(font);
                break;
            }
        }
    }
    return result;
}
Esempio n. 11
0
/*
 * Return the background color for the given GC.
 */
Pixel
getCgsBack(XtermWidget xw, VTwin *cgsWin, GC gc)
{
    int n;
    Pixel result = 0;

    for_each_gc(n) {
        CgsCache *me;

        if ((me = myCache(xw, cgsWin, (CgsEnum) n)) != 0) {
            if (THIS(gc) == gc) {
                result = THIS(bg);
                break;
            }
        }
    }
    return result;
}
Esempio n. 12
0
/*
 * Class:     sfml_audio_SoundSource
 * Method:    nativeGetData
 * Signature: (Ljava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_sfml_audio_Sound_nativeGetData
    (JNIEnv *env, jobject obj, jobject buffer) {

    sf::Sound *sound = THIS(sf::Sound);
    void *data = env->GetDirectBufferAddress(buffer);

    ((jbyte*)data)[0] = sound->getLoop() ? 1 : 0;
    ((jlong*)data)[1] = (jlong)sound->getPlayingOffset().asMicroseconds();
}
Esempio n. 13
0
/*
 * Class:     sfml_audio_SoundBuffer
 * Method:    nativeLoadFromMemory
 * Signature: ([B)Z
 */
JNIEXPORT jboolean JNICALL Java_sfml_audio_SoundBuffer_nativeLoadFromMemory (JNIEnv *env, jobject obj, jbyteArray arr) {
    std::size_t n = (std::size_t)env->GetArrayLength(arr);
    jbyte* mem = env->GetByteArrayElements(arr, 0);

    jboolean result = THIS(sf::SoundBuffer)->loadFromMemory(mem, n);

    env->ReleaseByteArrayElements(arr, mem, JNI_ABORT);
    return result;
}
Esempio n. 14
0
QWidget *ItemTableDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option,
                                         const QModelIndex &index) const{
    if(index.column()==0){
        QComboBox* combo=new QComboBox(parent);
        int j=0;
        for(int i=0;i<256;i++){
            QString name(res->itemDictionary.entries[i].speciesName);
            if(name.length()){
                combo->addItem(QString("%1(%2)").
                               arg(i).
                               arg(name),
                               QVariant(i));
                combo->setItemData(j,res->itemBackground[KfMap::itemCatagory[i]],Qt::BackgroundRole);
                combo->setItemData(j,res->itemImages.images[i].small,Qt::DecorationRole);
                j++;
            }

        }
        //issue#22, bad imp, TODO
        ItemTableDelegate* THIS(const_cast<ItemTableDelegate*>(this));
        connect(combo,&QComboBox::currentTextChanged,[THIS,combo](){
            emit THIS->commitData(combo);
            emit THIS->closeEditor(combo);
        });
        return combo;
    }else if(index.column()==1){
        QComboBox* combo=new QComboBox(parent);
        int species=pMainWindow->map.itemAt(index.row()).basic.species();
        for(int p:res->itemDictionary.entries[species].behaviorName.keys()){
            combo->addItem(QString("%1(%2)").
                           arg(p).
                           arg(res->itemDictionary.entries[species].behaviorName[p]),
                  QVariant(p));
        }
        //issue#22, bad imp, TODO
        ItemTableDelegate* THIS(const_cast<ItemTableDelegate*>(this));
        connect(combo,&QComboBox::currentTextChanged,[THIS,combo](){
            emit THIS->commitData(combo);
            emit THIS->closeEditor(combo);
        });
        return combo;
    }
    else return QStyledItemDelegate::createEditor(parent,option,index);
}
Esempio n. 15
0
/*
 * Class:     sfml_audio_SoundBuffer
 * Method:    nativeGetData
 * Signature: (Ljava/nio/Buffer;)V
 */
JNIEXPORT void JNICALL Java_sfml_audio_SoundBuffer_nativeGetData
    (JNIEnv *env, jobject obj, jobject buffer) {

    sf::SoundBuffer *soundBuffer = THIS(sf::SoundBuffer);
    void *data = env->GetDirectBufferAddress(buffer);

    ((jint*)data)[0] = (jint)soundBuffer->getSampleCount();
    ((jint*)data)[1] = (jint)soundBuffer->getSampleRate();
    ((jint*)data)[2] = (jint)soundBuffer->getChannelCount();
    ((jlong*)data)[3] = (jlong)soundBuffer->getDuration().asMicroseconds();
}
Esempio n. 16
0
U_NAMESPACE_END

// C wrapper --------------------------------------------------------------- ***

#define THIS(en) ((icu::StringEnumeration*)(en->context))

U_CDECL_BEGIN

/**
 * Wrapper API to make StringEnumeration look like UEnumeration.
 */
static void U_CALLCONV
ustrenum_close(UEnumeration* en) {
    delete THIS(en);
    uprv_free(en);
}
Esempio n. 17
0
/*
 * Return the font for the given GC.
 */
CgsEnum
getCgsId(XtermWidget xw, VTwin *cgsWin, GC gc)
{
    int n;
    CgsEnum result = gcNorm;

    for_each_gc(n) {
        CgsCache *me;

        if ((me = myCache(xw, cgsWin, (CgsEnum) n)) != 0) {
            if (THIS(gc) == gc) {
                result = (CgsEnum) n;
                break;
            }
        }
    }
    return result;
}
Esempio n. 18
0
static OSStatus rdpsnd_ios_render_cb(
		void *inRefCon,
		AudioUnitRenderActionFlags __unused *ioActionFlags,
		const AudioTimeStamp __unused *inTimeStamp,
		UInt32 inBusNumber,
		UInt32 __unused inNumberFrames,
		AudioBufferList *ioData
)
{
	unsigned int i;

	if (inBusNumber != 0)
	{
		return noErr;
	}

	rdpsndIOSPlugin *p = THIS(inRefCon);

	for (i = 0; i < ioData->mNumberBuffers; i++)
	{
		AudioBuffer* target_buffer = &ioData->mBuffers[i];

		int32_t available_bytes = 0;
		const void *buffer = TPCircularBufferTail(&p->buffer, &available_bytes);
		if (buffer != NULL && available_bytes > 0)
		{
			const int bytes_to_copy = MIN((int32_t)target_buffer->mDataByteSize, available_bytes);

			memcpy(target_buffer->mData, buffer, bytes_to_copy);
			target_buffer->mDataByteSize = bytes_to_copy;

			TPCircularBufferConsume(&p->buffer, bytes_to_copy);
		}
		else
		{
			target_buffer->mDataByteSize = 0;
			AudioOutputUnitStop(p->audio_unit);
			p->is_playing = 0;
		}
	}

	return noErr;
}
/*
 * Class:     sfml_graphics_RectangleShape
 * Method:    nativeSetSize
 * Signature: (FF)V
 */
JNIEXPORT void JNICALL Java_sfml_graphics_RectangleShape_nativeSetSize
    (JNIEnv *env, jobject obj, jfloat w, jfloat h) {

    THIS(sf::RectangleShape)->setSize(sf::Vector2f(w, h));
}
Esempio n. 20
0
/*
 * Class:     sfml_audio_SoundBuffer
 * Method:    nativeCopy
 * Signature: ()J
 */
JNIEXPORT jlong JNICALL Java_sfml_audio_SoundBuffer_nativeCopy (JNIEnv *env, jobject obj) {
    return (jlong)new sf::SoundBuffer(*THIS(sf::SoundBuffer));
}
Esempio n. 21
0
/*
 * Class:     sfml_audio_SoundBuffer
 * Method:    nativeDelete
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_sfml_audio_SoundBuffer_nativeDelete (JNIEnv *env, jobject obj) {
    delete THIS(sf::SoundBuffer);
}
Esempio n. 22
0
/*
 * Return a GC associated with the given id, allocating if needed.
 */
GC
getCgsGC(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId)
{
    CgsCache *me;
    GC result = 0;
    int j, k;
    unsigned used = 0;

    if ((me = myCache(xw, cgsWin, cgsId)) != 0) {
        TRACE2(("getCgsGC(%s, %s)\n",
                traceVTwin(xw, cgsWin), traceCgsEnum(cgsId)));
        if (me->mask != 0) {

            /* fill in the unchanged fields */
            if (!(me->mask & GC_CSet))
                NEXT(cset) = 0;	/* OPT_DEC_CHRSET */
            if (!(me->mask & GCFont))
                NEXT(font) = THIS(font);
            if (!(me->mask & GCForeground))
                NEXT(fg) = THIS(fg);
            if (!(me->mask & GCBackground))
                NEXT(bg) = THIS(bg);

            if (NEXT(font) == 0) {
                setCgsFont(xw, cgsWin, cgsId, 0);
            }

            TRACE2(("...Cgs new data fg=%s, bg=%s, font=%s cset %s\n",
                    tracePixel(xw, NEXT(fg)),
                    tracePixel(xw, NEXT(bg)),
                    traceFont(NEXT(font)),
                    traceCSet(NEXT(cset))));

            /* try to find the given data in an already-created GC */
            for (j = 0; j < DEPTH; ++j) {
                if (LIST(j).gc != 0
                        && SameFont(LIST(j).font, NEXT(font))
                        && SameCSet(LIST(j).cset, NEXT(cset))
                        && SameColor(LIST(j).fg, NEXT(fg))
                        && SameColor(LIST(j).bg, NEXT(bg))) {
                    LINK(j);
                    result = THIS(gc);
                    TRACE2(("getCgsGC existing %p(%d)\n", result, ITEM()));
                    break;
                }
            }

            if (result == 0) {
                /* try to find an empty slot, to create a new GC */
                used = 0;
                for (j = 0; j < DEPTH; ++j) {
                    if (LIST(j).gc == 0) {
                        LINK(j);
                        result = newCache(xw, cgsWin, cgsId, me);
                        break;
                    }
                    if (used < LIST(j).used)
                        used = LIST(j).used;
                }
            }

            if (result == 0) {
                /* if none were empty, pick the least-used slot, to modify */
                for (j = 0, k = -1; j < DEPTH; ++j) {
                    if (used >= LIST(j).used) {
                        used = LIST(j).used;
                        k = j;
                    }
                }
                LINK(k);
                TRACE2(("...getCgsGC least-used(%d) was %d\n", k, THIS(used)));
                result = chgCache(xw, cgsId, me, True);
            }
            me->next = *(me->data);
        } else {
            result = THIS(gc);
        }
        me->mask = 0;
        THIS(used) += 1;
        TRACE2(("...getCgsGC(%s, %s) gc %p(%d), used %d\n",
                traceVTwin(xw, cgsWin),
                traceCgsEnum(cgsId), result, ITEM(), THIS(used)));
    }
    return result;
}
/*
 * Class:     org_jsfml_audio_SoundRecorder
 * Method:    nativeDelete
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_org_jsfml_audio_SoundRecorder_nativeDelete (JNIEnv *env, jobject obj) {
    delete THIS(JSFML::SoundRecorder);
}
Esempio n. 24
0
static GC
chgCache(XtermWidget xw, CgsEnum cgsId GCC_UNUSED, CgsCache * me, Bool both)
{
    XGCValues xgcv;
    XtGCMask mask = (GCForeground | GCBackground | GCFont);

    memset(&xgcv, 0, sizeof(xgcv));

    TRACE2(("chgCache(%s) old data fg=%s, bg=%s, font=%s cset %s\n",
            traceCgsEnum(cgsId),
            tracePixel(xw, THIS(fg)),
            tracePixel(xw, THIS(bg)),
            traceFont(THIS(font)),
            traceCSet(THIS(cset))));
#if OPT_TRACE > 1
    if (!SameFont(THIS(font), NEXT(font)))
        TRACE2(("...chgCache new font=%s\n", traceFont(NEXT(font))));
    if (!SameCSet(THIS(cset), NEXT(cset)))
        TRACE2(("...chgCache new cset=%s\n", traceCSet(NEXT(cset))));
    if (!SameColor(THIS(fg), NEXT(fg)))
        TRACE2(("...chgCache new fg=%s\n", tracePixel(xw, NEXT(fg))));
    if (!SameColor(THIS(bg), NEXT(bg)))
        TRACE2(("...chgCache new bg=%s\n", tracePixel(xw, NEXT(bg))));
#endif

    if (both) {
        THIS(font) = NEXT(font);
        THIS(cset) = NEXT(cset);
    }
    THIS(fg) = NEXT(fg);
    THIS(bg) = NEXT(bg);

    xgcv.font = THIS(font)->fs->fid;
    xgcv.foreground = THIS(fg);
    xgcv.background = THIS(bg);

    XChangeGC(myDisplay(xw), THIS(gc), mask, &xgcv);
    TRACE2(("...chgCache(%s) updated gc %p(%d)\n",
            traceCgsEnum(cgsId), THIS(gc), ITEM()));

    THIS(used) = 0;
    return THIS(gc);
}
Esempio n. 25
0
static GC
newCache(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId, CgsCache * me)
{
    XGCValues xgcv;
    XtGCMask mask;

    THIS(font) = NEXT(font);
    THIS(cset) = NEXT(cset);
    THIS(fg) = NEXT(fg);
    THIS(bg) = NEXT(bg);

    memset(&xgcv, 0, sizeof(xgcv));
    xgcv.font = NEXT(font)->fs->fid;
    mask = (GCForeground | GCBackground | GCFont);

    switch (cgsId) {
    case gcNorm:
    case gcBold:
    case gcNormReverse:
    case gcBoldReverse:
#if OPT_WIDE_CHARS
    case gcWide:
    case gcWBold:
    case gcWideReverse:
    case gcWBoldReverse:
#endif
        mask |= (GCGraphicsExposures | GCFunction);
        xgcv.graphics_exposures = True;		/* default */
        xgcv.function = GXcopy;
        break;
#if OPT_BOX_CHARS
    case gcLine:
        mask |= (GCGraphicsExposures | GCFunction);
        xgcv.graphics_exposures = True;		/* default */
        xgcv.function = GXcopy;
        break;
    case gcDots:
        xgcv.fill_style = FillTiled;
        xgcv.tile =
            XmuCreateStippledPixmap(XtScreen((Widget) xw),
                                    THIS(fg),
                                    THIS(bg),
                                    xw->core.depth);
        THIS(tile) = xgcv.tile;
        mask = (GCForeground | GCBackground);
        mask |= (GCGraphicsExposures | GCFunction | GCTile | GCFillStyle);
        xgcv.graphics_exposures = True;		/* default */
        xgcv.function = GXcopy;
        break;
#endif
#if OPT_DEC_CHRSET
    case gcCNorm:
    case gcCBold:
        break;
#endif
    case gcVTcursNormal:	/* FALLTHRU */
    case gcVTcursFilled:	/* FALLTHRU */
    case gcVTcursReverse:	/* FALLTHRU */
    case gcVTcursOutline:	/* FALLTHRU */
        break;
#if OPT_TEK4014
    case gcTKcurs:		/* FALLTHRU */
        /* FIXME */
#endif
    case gcMAX:		/* should not happen */
        return 0;
    }
    xgcv.foreground = NEXT(fg);
    xgcv.background = NEXT(bg);

    THIS(gc) = XCreateGC(myDisplay(xw), myDrawable(xw, cgsWin), mask, &xgcv);
    TRACE(("getCgsGC(%s) created gc %p(%d)\n",
           traceCgsEnum(cgsId), (void *) THIS(gc), ITEM()));

    THIS(used) = 0;
    return THIS(gc);
}
Esempio n. 26
0
//This callback is used to feed the AU buffers
static OSStatus rdpsnd_ios_render_cb(
				     void *inRefCon,
				     AudioUnitRenderActionFlags *ioActionFlags,
				     const AudioTimeStamp *inTimeStamp,
				     UInt32 inBusNumber,
				     UInt32 inNumberFrames,
				     AudioBufferList *ioData
				     )
{
	unsigned int i;
	
	if (inBusNumber != 0)
	{
		return noErr;
	}
	
	rdpsndIOSPlugin *p = THIS(inRefCon);
	
	//printf("Playing %d frames... ", (unsigned int)inNumberFrames);
	
	//pthread_mutex_lock(&p->bMutex);
	for (i = 0; i < ioData->mNumberBuffers; i++)
	{
		//printf("buf%d ", i);
		/*printf("buf size = %d (%lums) ",
		 (unsigned int)ioData->mBuffers[i].mDataByteSize,
		 (ioData->mBuffers[i].mDataByteSize * 1000) / p->bpsAvg);
		 */
		AudioBuffer* target_buffer = &ioData->mBuffers[i];
		
		int32_t available_bytes = 0;
		const void *buffer = TPCircularBufferTail(&p->buffer, &available_bytes);
		if (buffer != NULL && available_bytes > 0)
		{
			const int bytes_to_copy = MIN((int32_t)target_buffer->mDataByteSize, available_bytes);
			
			memcpy(target_buffer->mData, buffer, bytes_to_copy);
			target_buffer->mDataByteSize = bytes_to_copy;
			
			TPCircularBufferConsume(&p->buffer, bytes_to_copy);
			
			p->frameCnt += inNumberFrames;
		}
		else
		{
			*ioActionFlags = *ioActionFlags | kAudioUnitRenderAction_OutputIsSilence;
			
			//FIXME: force sending of any remaining items in queue
			if (Queue_Count(p->waveQ) > 0)
			{
				p->frameCnt += 1000000;
			}
			
			//in case we didnt get a post render callback first (observed)
			rdpsnd_count_frames(p);
			
			
			target_buffer->mDataByteSize = 0;
			AudioOutputUnitStop(p->audio_unit);
			//p->is_playing = 0;
			rdpsnd_set_isPlaying(p, FALSE);
			
			printf("Buffer is empty with frameCnt:%d(uderrun)\n", p->frameCnt);
		}
	}
	//pthread_mutex_unlock(&p->bMutex);
	
	
	return noErr;
}
Esempio n. 27
0
/*
 * Class:     sfml_audio_SoundBuffer
 * Method:    nativeLoadFromSamples
 * Signature: (Ljava/nio/Buffer;III)Z
 */
JNIEXPORT jboolean JNICALL Java_sfml_audio_SoundBuffer_nativeLoadFromSamples
    (JNIEnv *env, jobject obj, jobject buffer, jint sampleCount, jint channelCount, jint sampleRate) {

    sf::Int16 *samples = (sf::Int16*)env->GetDirectBufferAddress(buffer);
    return THIS(sf::SoundBuffer)->loadFromSamples(samples, sampleCount, channelCount, sampleRate);
}
Esempio n. 28
0
/**
 * Wrapper API to make StringEnumeration look like UEnumeration.
 */
static void U_CALLCONV
ustrenum_reset(UEnumeration* en,
               UErrorCode* ec)
{
    THIS(en)->reset(*ec);
}
/*
 * Class:     org_jsfml_audio_SoundRecorder
 * Method:    nativeSetExPtr
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_org_jsfml_audio_SoundRecorder_nativeSetExPtr (JNIEnv *env, jobject obj) {
    JSFML::NativeObject::SetExPointer(env, obj, org_jsfml_internal_ExPtr_SOUND_RECORDER,
                                      dynamic_cast<sf::SoundRecorder*>(THIS(JSFML::SoundRecorder)));
}
Esempio n. 30
0
/**
 * Wrapper API to make StringEnumeration look like UEnumeration.
 */
static int32_t U_CALLCONV
ustrenum_count(UEnumeration* en,
               UErrorCode* ec)
{
    return THIS(en)->count(*ec);
}