break;
}
- case Message::NEW_PICTURE:
- {
- // FIXME MQSUB
-
- //Log::getInstance()->log("Control", Log::DEBUG, "TVMedia NEW_PICTURE");
- OsdVector* osdv = dynamic_cast<OsdVector*>(Osd::getInstance());
- if (osdv) osdv->informPicture(m->tag, reinterpret_cast<ImageIndex>(m->data));
- break;
- }
- case Message::NEW_PICTURE_STATIC:
- {
- //Log::getInstance()->log("Control", Log::DEBUG, "TVMedia NEW_PICTURE %x %x",m->tag,m->parameter);
- OsdVector* osdv = dynamic_cast<OsdVector*>(Osd::getInstance());
- if (osdv) osdv->informPicture(static_cast<unsigned long long>(m->tag) << 32LL, reinterpret_cast<ImageIndex>(m->data));
- break;
- }
}
}
else if (m->p_to == Message::BOXSTACK)
#include "log.h"
#include "videoomx.h"
#include "surface.h"
-#include "message.h"
#include "messagequeue.h"
#include "teletxt/txtfont.h"
Message* m = new Message();
// We have a pictures! send a message to ourself, to switch to gui thread // FIXME MQSUB
m->from = this;
- m->p_to = Message::CONTROL;
+ m->to = this;
m->data = reinterpret_cast<void*>(handle);
if (!static_image)
m->message = Message::NEW_PICTURE_STATIC;
m->tag = info->lindex >> 32LL;
}
-
MessageQueue::getInstance()->postMessage(m); // inform control about new picture
delete info;
Message* m = new Message();
m->from = this;
- m->p_to = Message::CONTROL;
+ m->to = this;
m->data = reinterpret_cast<void*>(info->handle);
if (!static_image)
m->message = Message::NEW_PICTURE_STATIC;
m->tag = info->lindex >> 32LL;
}
-
MessageQueue::getInstance()->postMessage(m); // inform command about new picture
delete info;
#ifdef PICTURE_DECODER_MAGICK
reader.addDecoder(new MagickDecoder(&reader));
#endif
+ MessageQueue::getInstance()->addReceiver(this);
+}
+
+OsdVector::~OsdVector()
+{
+ MessageQueue::getInstance()->removeReceiver(this);
}
bool OsdVector::screenShot(const char* fileName)
surfaces_mutex.unlock();
}
+void OsdVector::processMessage(Message* m)
+{
+ switch(m->message)
+ {
+ case Message::NEW_PICTURE:
+ {
+ //LogNT::getInstance()->debug(TAG, "TVMedia NEW_PICTURE");
+ informPicture(m->tag, reinterpret_cast<ImageIndex>(m->data));
+ break;
+ }
+ case Message::NEW_PICTURE_STATIC:
+ {
+ //LogNT::getInstance()->debug(TAG, "TVMedia NEW_PICTURE {:#x} {:#x}", m->tag, m->parameter);
+ informPicture(static_cast<unsigned long long>(m->tag) << 32LL, reinterpret_cast<ImageIndex>(m->data));
+ break;
+ }
+ }
+}
+
/*
ImageIndex OsdVector::getJpegRef(const char* fileName, int *width,int *height)
{
#include <mutex>
#include "defines.h"
+#include "messagequeue.h"
#include "threadsystem.h"
#include "osd.h"
#include "colour.h"
float x, y, w, h;
};
-class OsdVector : public Osd
+class OsdVector : public Osd, public MessageReceiver
{
public:
OsdVector();
+ virtual ~OsdVector();
int restore();
// should be only called from control thread
void informPicture(LoadIndex index, ImageIndex i_index);
+ void processMessage(Message* m);
int charSet() {return 2;}; //UTF-8
bool static_image = true;
if (pict_inf.lindex & 0xffffffff) static_image = false;
- Message* m = new Message();
+ Message* m = new Message();
// We have a pictures! send a message to ourself, to switch to gui thread
m->from = this;
- m->p_to = Message::CONTROL;
+ m->to = this;
m->data = pict_inf.reference;
if (!static_image) {
m->message = Message::NEW_PICTURE;