void PdBase::closePatch(Patch& patch) { if(!patch.isValid()) { return; } libpd_closefile(patch.handle()); patch.clear(); }
JNIEXPORT void JNICALL Java_org_puredata_core_PdBase_closeFile (JNIEnv *env, jclass cls, jlong ptr) { pthread_mutex_lock(&mutex); libpd_closefile((void *)ptr); pthread_mutex_unlock(&mutex); // even naughtier, using a pointer from Java // using long integer in case we're on a 64bit CPU }
portAudio::~portAudio() { err = Pa_StopStream( stream ); if( err != paNoError ) this->sendError(err); err = Pa_CloseStream( stream ); if( err != paNoError ) this->sendError(err); Pa_Terminate(); if(handle != NULL) libpd_closefile(handle); }
int main(int argc, char **argv) { if (argc < 3) { fprintf(stderr, "usage: %s file folder\n", argv[0]); return -1; } // init pd int srate = 44100, foo; libpd_set_printhook((t_libpd_printhook)pdprint); libpd_set_noteonhook((t_libpd_noteonhook)pdnoteon); libpd_init(); libpd_init_audio(1, 2, srate); // compute audio [; pd dsp 1( libpd_start_message(1); // one entry in list libpd_add_float(1.0f); libpd_finish_message("pd", "dsp"); // open patch [; pd open file folder( void *file = libpd_openfile(argv[1], argv[2]); // now run pd for (foo = 0; foo < 2; foo++) /* note: doesn't yet work the second time */ { printf("running nogui for 1000 ticks...\n"); runawhile(1); printf("starting gui..\n"); if (libpd_start_gui("../../../pure-data/")) printf("gui startup failed\n"); printf("running for 2000 more ticks...\n"); runawhile(2); libpd_stop_gui(); } printf("Closing and exiting\n"); libpd_closefile(file); return 0; }