From 47246db7e9d71ba694b719001033fba1766a58c4 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 10 Jun 2006 02:43:54 +0000 Subject: More juggling git-svn-id: http://svn.drobilla.net/lad/grauph@16 a436a847-0d15-0410-975c-d299462d15a1 --- src/clients/ThreadedSigClientInterface.cpp | 71 ------------------------------ 1 file changed, 71 deletions(-) delete mode 100644 src/clients/ThreadedSigClientInterface.cpp (limited to 'src/clients/ThreadedSigClientInterface.cpp') diff --git a/src/clients/ThreadedSigClientInterface.cpp b/src/clients/ThreadedSigClientInterface.cpp deleted file mode 100644 index 860d91f6..00000000 --- a/src/clients/ThreadedSigClientInterface.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/* This file is part of Om. Copyright (C) 2006 Dave Robillard. - * - * Om is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 2 of the License, or (at your option) any later - * version. - * - * Om is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ThreadedSigClientInterface.h" -#include -using std::cerr; using std::endl; - -namespace LibOmClient { - - -/** Push an event (from the engine, ie 'new patch') on to the queue. - */ -void -ThreadedSigClientInterface::push_sig(Closure ev) -{ - cerr << "-- pushing event\n"; - - bool success = false; - bool first = true; - - // (Very) slow busy-wait if the queue is full - // FIXME: Make this wait on a signal from process_sigs iff this happens - while (!success) { - success = _sigs.push(ev); - if (!success) { - if (first) { - cerr << "[ThreadedSigClientInterface] WARNING: (Client) event queue full. Waiting to try again..." << endl; - first = false; - } - usleep(200000); // 100 milliseconds (2* rate process_sigs is called) - } - } -} - - -/** Process all queued events that came from the OSC thread. - * - * This function should be called from the Gtk thread to emit signals and cause - * the connected methods to execute. - */ -bool -ThreadedSigClientInterface::emit_signals() -{ - // Process a maximum of queue-size events, to prevent locking the GTK - // thread indefinitely while processing continually arriving events - size_t num_processed = 0; - while (!_sigs.is_empty() && num_processed++ < _sigs.capacity()/2) { - cerr << "-- emitting event\n"; - Closure& ev = _sigs.pop(); - ev(); - ev.disconnect(); - } - - return true; -} - - -} // namespace LibOmClient -- cgit v1.2.1