diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/Makefile.am | 2 | ||||
-rw-r--r-- | client/control.cc | 23 | ||||
-rw-r--r-- | client/control.h | 6 | ||||
-rw-r--r-- | client/decoder.cc | 8 | ||||
-rw-r--r-- | client/mainwindow.cc | 52 | ||||
-rw-r--r-- | client/mainwindow.h | 13 | ||||
-rw-r--r-- | client/networksender.cc | 2 | ||||
-rw-r--r-- | client/status.h | 2 | ||||
-rw-r--r-- | client/xvaccelrenderer.cc | 2 |
9 files changed, 47 insertions, 63 deletions
diff --git a/client/Makefile.am b/client/Makefile.am index 4a49d35..07b217e 100644 --- a/client/Makefile.am +++ b/client/Makefile.am @@ -24,6 +24,7 @@ miav_client_SOURCES = $(shell ../tools/MocList cc ) \ messagebox.cc \ player.cc \ splashscreen.cc \ + statusbar.cc \ svgloader.cc \ videowidget.cc \ yuv_draw.cc \ @@ -47,6 +48,7 @@ EXTRA_DIST = \ messagebox.h \ player.h \ splashscreen.h \ + statusbar.h \ svgloader.h \ videowidget.h \ yuv_draw.h \ diff --git a/client/control.cc b/client/control.cc index d634039..4b5d2fa 100644 --- a/client/control.cc +++ b/client/control.cc @@ -33,6 +33,9 @@ Control::Control() recording = false; muted = false; cpr = ""; + + getfreeze = false; + getshot = false; } Control::~Control() @@ -59,6 +62,7 @@ void Control::freeze() { mutex.lock(); frozen = true; + getfreeze = true; mutex.unlock(); } @@ -73,6 +77,7 @@ void Control::shoot() { mutex.lock(); frozen = false; + getshot = true; mutex.unlock(); } @@ -131,6 +136,24 @@ bool Control::isMuted() return ismuted; } +bool Control::getShot() +{ + mutex.lock(); + bool ret = getshot; + getshot = false; + mutex.unlock(); + return ret; +} + +bool Control::getFreeze() +{ + mutex.lock(); + bool ret = getfreeze; + getfreeze = false; + mutex.unlock(); + return ret; +} + // Global control object Control MIaV::control; diff --git a/client/control.h b/client/control.h index cdc8bc4..b2baba5 100644 --- a/client/control.h +++ b/client/control.h @@ -58,6 +58,9 @@ public: // bool isScreenshot(); // void takeScreenshot(); + bool getShot(); + bool getFreeze(); + private: bool frozen; bool recording; @@ -66,6 +69,9 @@ private: QMutex mutex; QString cpr; + + bool getfreeze; + bool getshot; }; namespace MIaV { diff --git a/client/decoder.cc b/client/decoder.cc index d8bf430..11cee08 100644 --- a/client/decoder.cc +++ b/client/decoder.cc @@ -93,8 +93,8 @@ void Decoder::run() sendersmutex.lock(); if(senders.isEmpty() == false) senders.back()->pushFrame(frame, - MIaV::control.isFrozen(), - false); + MIaV::control.getShot(), + MIaV::control.getFreeze()); sendersmutex.unlock(); } else { @@ -171,8 +171,8 @@ Status Decoder::status() // Get the server disk status etc. if(senders.isEmpty() == false) senders.back()->getServerStatus(&s); - fprintf(stderr, "Load: %d of %d - ", s.server_load, s.server_load_max); - fprintf(stderr, "Space: %d of %d\n", s.server_diskspace, s.server_diskspace_max); + // fprintf(stderr, "Load: %d of %d - ", s.server_load, s.server_load_max); + // fprintf(stderr, "Space: %d of %d\n", s.server_diskspace, s.server_diskspace_max); // Read out the queue sizes QLinkedList<NetworkSender*>::iterator i; diff --git a/client/mainwindow.cc b/client/mainwindow.cc index a158c09..88eae63 100644 --- a/client/mainwindow.cc +++ b/client/mainwindow.cc @@ -131,25 +131,10 @@ MainWindow::MainWindow(Decoder *d) layout->addWidget(history, 0,4, 3,1); // Create statusbar - statusbar = new QStatusBar(this); + statusbar = new StatusBar(this, decoder); outerlayout->addWidget(statusbar, 1,0, 1,1); - server_diskspace = new QProgressBar(statusbar); - server_diskspace->setRange(0, 100); - server_diskspace->setValue(0); - - server_load = new QProgressBar(statusbar); - server_load->setRange(0, 100); - server_load->setValue(0); - - messagefield = new QLabel(statusbar); - - statusbar->addWidget(messagefield, 80); - statusbar->addWidget(server_diskspace, 10); - statusbar->addWidget(server_load, 10); - - // statusbar->showMessage("Ready!"); - startTimer(100); + statusbar->message("Ready"); show(); // setWindowState(Qt::WindowFullScreen); @@ -167,37 +152,6 @@ MainWindow::~MainWindow() MIaV::info->log("MIaV is shut down."); } -void MainWindow::timerEvent(QTimerEvent *event) -{ - Status s = decoder->status(); - QString statusmsg; - - for(int cnt = 0; cnt < s.queue_sizes.size(); cnt++) { - QString next; - next.sprintf("(%d)", s.queue_sizes[cnt]); - statusmsg.prepend(next); - } - - messagefield->setText(statusmsg); - - if(s.server_diskspace_max != 0xffffffff) { - server_diskspace->setRange(0, s.server_diskspace_max); - server_diskspace->setValue(s.server_diskspace); - server_diskspace->setEnabled(true); - } else { - server_diskspace->setRange(0, 0); - server_diskspace->setEnabled(false); - } - - if(s.server_load_max != 0xffffffff) { - server_load->setRange(0, s.server_load_max); - server_load->setValue(s.server_load); - server_load->setEnabled(true); - } else { - server_load->setRange(0, 0); - server_load->setEnabled(false); - } -} void MainWindow::about_clicked() @@ -220,9 +174,11 @@ void MainWindow::record_clicked() if(MIaV::control.isRecording()) { MIaV::control.stop(); btn_record->setIcon(*Icons::record); + statusbar->message("Stopped"); } else { MIaV::control.record(); btn_record->setIcon(*Icons::stop); + statusbar->message("Recording"); } } diff --git a/client/mainwindow.h b/client/mainwindow.h index 5b38397..250a8be 100644 --- a/client/mainwindow.h +++ b/client/mainwindow.h @@ -31,15 +31,14 @@ #include <QPushButton> #include <QLabel> -#include <QStatusBar> - -#include <QProgressBar> #include "historyframe.h" #include "videowidget.h" #include "decoder.h" +#include "statusbar.h" + class MainWindow : public QWidget { Q_OBJECT @@ -49,9 +48,6 @@ public: QWidget *getVideoWidget() { return video; } -protected: - void timerEvent(QTimerEvent *event); - public slots: void cpr_clicked(); void clear_clicked(); @@ -82,10 +78,7 @@ private: QLabel *lbl_name; // Statusbar - QStatusBar *statusbar; - QLabel *messagefield; - QProgressBar *server_diskspace; - QProgressBar *server_load; + StatusBar *statusbar; }; #endif/*__MIAV_MAINWINDOW_H__*/ diff --git a/client/networksender.cc b/client/networksender.cc index dcb1919..11eb259 100644 --- a/client/networksender.cc +++ b/client/networksender.cc @@ -62,6 +62,8 @@ NetworkSender::~NetworkSender() void NetworkSender::pushFrame(char* framedata, bool freeze, bool snapshot) { + printf("F: %d S %d\n", freeze, snapshot); + Frame *frame = new Frame((unsigned char*)framedata); frame->freeze = freeze; frame->shoot = snapshot; diff --git a/client/status.h b/client/status.h index 6a7bca2..a3ccad7 100644 --- a/client/status.h +++ b/client/status.h @@ -27,6 +27,8 @@ #ifndef __MIAV_STATUS_H__ #define __MIAV_STATUS_H__ +#define UNKNOWN 0xffffffff + class Status { public: QList<unsigned int> queue_sizes; diff --git a/client/xvaccelrenderer.cc b/client/xvaccelrenderer.cc index 984c57a..208ea04 100644 --- a/client/xvaccelrenderer.cc +++ b/client/xvaccelrenderer.cc @@ -208,7 +208,7 @@ uint8_t XvAccelRender::GUI_XvInit(QWidget * window, uint32_t w, uint32_t h) for (k = 0; (k < curai->num_ports) && !port; k++) { if (GUI_XvList(WDN, k + curai->base_id, &xv_format)) - port = k + curai->base_id + 1; // FIXME: TODO: HACK: It works when +1 is applied! But why!? + port = k + curai->base_id + 0; // FIXME: TODO: HACK: It works when +1 is applied! But why!? } |