From e0592745a40dae2e14e5b6d9226f41a293ababc9 Mon Sep 17 00:00:00 2001 From: deva Date: Thu, 16 Jun 2005 21:28:57 +0000 Subject: Rewrote thread object Fixed bug in mov_encoder (pushed read_sem too many times, whihc lead to growing server queue) --- src/mov_encoder_thread.cc | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'src/mov_encoder_thread.cc') diff --git a/src/mov_encoder_thread.cc b/src/mov_encoder_thread.cc index 600a351..49ba24c 100644 --- a/src/mov_encoder_thread.cc +++ b/src/mov_encoder_thread.cc @@ -31,6 +31,11 @@ /* * $Log$ + * Revision 1.12 2005/06/16 21:28:57 deva + * Rewrote thread object + * Fixed bug in mov_encoder (pushed read_sem too many times, whihc lead to + * growing server queue) + * * Revision 1.11 2005/06/14 18:58:35 deva * *** empty log message *** * @@ -96,19 +101,21 @@ MovEncoderThread::MovEncoderThread(const char *cpr, Info *i) pthread_mutex_init (&output_mutex, NULL); writer = new MovEncoderWriter(cpr, outputqueue, &out_sem, &output_mutex, info); - writer_tid = new pthread_t; - pthread_create (writer_tid, NULL, thread_run, writer); + writer->run(); + // writer_tid = new pthread_t; + //pthread_create (writer_tid, NULL, thread_run, writer); for(int cnt = 0; cnt < threads; cnt++) { - encs.push_back(new MovEncoder(&read_sem, + MovEncoder *movenc = new MovEncoder(&read_sem, inputqueue, &in_sem, &input_mutex, outputqueue, &out_sem, &output_mutex, - info)); - tids.push_back(new pthread_t); - pthread_create (tids[cnt], NULL, thread_run, encs[cnt]); + info); + movenc->run(); + encs.push_back(movenc); + // tids.push_back(new pthread_t); + // pthread_create (tids[cnt], NULL, thread_run, encs[cnt]); } - current_frame = 0; frame_number = 0; } @@ -133,11 +140,11 @@ MovEncoderThread::~MovEncoderThread() // They should be exited now, so we can delete them. for(int cnt = 0; cnt < threads; cnt++) { - pthread_join(*tids[cnt], NULL); + // pthread_join(*tids[cnt], NULL); delete encs[cnt]; - delete tids[cnt]; + // delete tids[cnt]; } - + // Tell the writer to stop writer->running = false; @@ -145,8 +152,8 @@ MovEncoderThread::~MovEncoderThread() sem_post(&out_sem); // Destroy the thread - pthread_join(*writer_tid, NULL); - delete writer_tid; + // pthread_join(*writer_tid, NULL); + // delete writer_tid; // delete the writer (end thereby close the file) delete writer; @@ -193,7 +200,6 @@ void MovEncoderThread::encode(Frame* frame) sem_post(&in_sem); // Start new block - current_frame = 0; block = new FrameVector; } -- cgit v1.2.3