/** VSTFX - An engine based on FST for handling linuxVST plugins **/
/******************************************************************/
-/** EDITOR tab stops at 4 **/
-
#include <stdlib.h>
#include <stdio.h>
#include <libgen.h>
+#include <assert.h>
#include <pthread.h>
#include <signal.h>
/*Look at the XEvent queue - if there are any XEvents we need to handle them,
including passing them to all the plugin (eventProcs) we are currently managing*/
+ bool may_sleep = true;
+
if(LXVST_XDisplay)
{
/*See if there are any events in the queue*/
int num_events = XPending(LXVST_XDisplay);
+
+ if (num_events > 0) {
+ // keep dispatching events as fast as possible
+ may_sleep = false;
+ }
/*process them if there are any*/
clock1 = g_get_monotonic_time();
}
+
+ if (may_sleep && elapsed_time_ms + 1 < LXVST_sched_timer_interval) {
+ Glib::usleep(1000 * (LXVST_sched_timer_interval - elapsed_time_ms - 1));
+ }
}
/*Drop out to here if we set gui_quit to 1 */
}
}
+ // if this function is called, there must be
+ // at least one plugin in the linked list
+ assert(vstfx_first);
+
if (vstfx_first == vstfx) {
vstfx_first = vstfx_first->next;
}