From bccde4f7265871cd652d4acd5f96acc530f85bd7 Mon Sep 17 00:00:00 2001 From: Steve Clement Date: Mon, 15 Jul 2013 22:39:25 +0200 Subject: [PATCH] - adaptepte usleep -> Glib::usleep - update to glib-2.34 Glib::Threads* (not tested yet, am on a Mac) --- frameserver/Buffer.cpp | 16 ++++++++-------- frameserver/Buffer.h | 14 +++++++------- frameserver/Buffers.cpp | 10 +++++----- frameserver/Buffers.h | 14 +++++++------- frameserver/test.cpp | 35 +++++++++++++++++------------------ 5 files changed, 44 insertions(+), 45 deletions(-) diff --git a/frameserver/Buffer.cpp b/frameserver/Buffer.cpp index ef39f00..d652f12 100644 --- a/frameserver/Buffer.cpp +++ b/frameserver/Buffer.cpp @@ -5,45 +5,45 @@ Buffer::Buffer( std::string _id ) id = _id; } -Buffer::~Buffer() +Buffer::~Buffer() { } void Buffer::set(frame_t data) { { - Glib::Mutex::Lock lock(mutex_); + Glib::Threads::Mutex::Lock lock(mutex_); frame = data; } } void Buffer::set_id(std::string _id) { - Glib::Mutex::Lock lock(mutex_); + Glib::Threads::Mutex::Lock lock(mutex_); id = _id; } void Buffer::set_selected(bool _selected) { - Glib::Mutex::Lock lock(mutex_); + Glib::Threads::Mutex::Lock lock(mutex_); selected = _selected; } - + frame_t Buffer::get() { - Glib::Mutex::Lock lock(mutex_); + Glib::Threads::Mutex::Lock lock(mutex_); return frame; } std::string Buffer::get_id() { - Glib::Mutex::Lock lock(mutex_); + Glib::Threads::Mutex::Lock lock(mutex_); return id; } bool Buffer::get_selected() { - Glib::Mutex::Lock lock(mutex_); + Glib::Threads::Mutex::Lock lock(mutex_); return selected; } diff --git a/frameserver/Buffer.h b/frameserver/Buffer.h index dccd697..79c10bb 100644 --- a/frameserver/Buffer.h +++ b/frameserver/Buffer.h @@ -16,22 +16,22 @@ class Buffer : public sigc::trackable public: Buffer(std::string _id); ~Buffer(); - + void set(frame_t); frame_t get(); - + std::string get_id(); void set_id(std::string id); - + bool get_selected(); void set_selected(bool); - + private: std::string id; frame_t frame; - + bool selected; - - Glib::Mutex mutex_; + + Glib::Threads::Mutex mutex_; }; #endif diff --git a/frameserver/Buffers.cpp b/frameserver/Buffers.cpp index 6333b64..284b3c5 100644 --- a/frameserver/Buffers.cpp +++ b/frameserver/Buffers.cpp @@ -1,6 +1,6 @@ #include "Buffers.h" -Buffers::Buffers() +Buffers::Buffers() { id = ""; } @@ -14,26 +14,26 @@ Buffers::Buffers(int _bufnum) Buffers::~Buffers() { - Glib::Mutex::Lock lock(mutex_); + Glib::Threads::Mutex::Lock lock(mutex_); buffers.clear(); } Buffer* Buffers::get(int index) { - Glib::Mutex::Lock lock(mutex_); + Glib::Threads::Mutex::Lock lock(mutex_); return buffers[index]; } void Buffers::add() { - Glib::Mutex::Lock lock(mutex_); + Glib::Threads::Mutex::Lock lock(mutex_); id += "1"; buffers.push_back( new Buffer( id ) ); } void Buffers::remove(std::string _id) { - Glib::Mutex::Lock lock(mutex_); + Glib::Threads::Mutex::Lock lock(mutex_); int size = buffers.size(); for( int i = 0; i < size; i++ ) { diff --git a/frameserver/Buffers.h b/frameserver/Buffers.h index d1caf46..45f8e0b 100644 --- a/frameserver/Buffers.h +++ b/frameserver/Buffers.h @@ -5,7 +5,7 @@ vector of pointers to "Buffer" objects. It automates locking during all operations and generates "ID" hashes for the buffers upon creation. */ -/* TODO: * create hashes during buffer creation +/* TODO: * create hashes during buffer creation * throw and handle exceptions */ #include @@ -24,21 +24,21 @@ class Buffers : public sigc::trackable public: Buffers(); Buffers(int); - + ~Buffers(); - + void add(); void remove(std::string); - + void set_selected_buffer(std::string); std::string get_selected_buffer(); - + Buffer* get(int); - + private: vector buffers; std::string id; - Glib::Mutex mutex_; + Glib::Threads::Mutex mutex_; std::string selected_buffer; }; #endif diff --git a/frameserver/test.cpp b/frameserver/test.cpp index 039190e..0fe490e 100644 --- a/frameserver/test.cpp +++ b/frameserver/test.cpp @@ -9,7 +9,6 @@ #include "Buffer.h" #include "Buffers.h" -#define NUMBUFS 100 #define NUMTHREADS 20 #define USECS 1000 @@ -22,14 +21,14 @@ Buffers* buffers; void reader(void); void writer(void); -int main(void) +int main(void) { srand( time(NULL) ); - Glib::thread_init(); + Glib::init(); // our main loop with support for signals and all that jazz //Glib::RefPtr Main = Glib::MainLoop::create(); - + buffers = new Buffers(NUMBUFS); vector readers; @@ -37,12 +36,12 @@ int main(void) for(int i = 0; i < NUMTHREADS; i++) { - readers.push_back( Glib::Thread::create( sigc::ptr_fun( &reader), false ) ); - writers.push_back( Glib::Thread::create( sigc::ptr_fun( &writer), false ) ); + readers.push_back( Glib::Threads::Thread::create( sigc::ptr_fun( &reader), false ) ); + writers.push_back( Glib::Threads::Thread::create( sigc::ptr_fun( &writer), false ) ); } - + //Main->run(); - + int count = 0; while(1) { count++; @@ -56,28 +55,28 @@ int main(void) cout << endl; } cout << endl; - + for(int i = 0; i < SEGWIDTH; i++) cout << frame.segments[i].r; cout << endl << endl; } - usleep( 10000 ); + Glib::usleep( 10000 ); }//*/ - + return 0; } -void reader(void) +void reader(void) { bool quit = false; frame_t frame; int bufnum = 0; while( !quit ) - { + { bufnum = rand()%NUMBUFS; frame = buffers->get(bufnum)->get(); // cout << "read " << bufnum << endl; - usleep( rand()%USECS ); + Glib::usleep( rand()%USECS ); } } @@ -85,7 +84,7 @@ void writer(void) { frame_t frame; bool quit = false; - int bufnum = 0; + int bufnum = 0; while( !quit ) { bufnum = rand()%NUMBUFS; @@ -96,16 +95,16 @@ void writer(void) frame.windows[i][j] = rand()%255; } } - + for(int i = 0; i < 12; i++) { frame.segments[i].r = 33+rand()%90; frame.segments[i].g = 33+rand()%90; frame.segments[i].b = 33+rand()%90; } - + buffers->get(bufnum)->set( frame ); // cout << "wrote " << bufnum << endl; - usleep( rand()%USECS ); + Glib::usleep( rand()%USECS ); } }