qmlFrontend/hwengine.cpp
branchqmlfrontend
changeset 10426 727a154cf784
parent 10424 4be6cd55f1cf
child 10428 7c25297720f1
equal deleted inserted replaced
10424:4be6cd55f1cf 10426:727a154cf784
     7 #include "hwengine.h"
     7 #include "hwengine.h"
     8 #include "previewimageprovider.h"
     8 #include "previewimageprovider.h"
     9 
     9 
    10 extern "C" {
    10 extern "C" {
    11     RunEngine_t *RunEngine;
    11     RunEngine_t *RunEngine;
    12     registerIPCCallback_t *registerIPCCallback;
    12     registerPreviewCallback_t *registerPreviewCallback;
    13     ipcToEngine_t *ipcToEngine;
    13     ipcToEngine_t *ipcToEngine;
    14     flibInit_t *flibInit;
    14     flibInit_t *flibInit;
    15     flibFree_t *flibFree;
    15     flibFree_t *flibFree;
    16 }
    16 }
    17 
    17 
    23 
    23 
    24     if(!hwlib.load())
    24     if(!hwlib.load())
    25         qWarning() << "Engine library not found" << hwlib.errorString();
    25         qWarning() << "Engine library not found" << hwlib.errorString();
    26 
    26 
    27     RunEngine = (RunEngine_t*) hwlib.resolve("RunEngine");
    27     RunEngine = (RunEngine_t*) hwlib.resolve("RunEngine");
    28     registerIPCCallback = (registerIPCCallback_t*) hwlib.resolve("registerIPCCallback");
    28     registerPreviewCallback = (registerPreviewCallback_t*) hwlib.resolve("registerIPCCallback");
    29     ipcToEngine = (ipcToEngine_t*) hwlib.resolve("ipcToEngine");
    29     ipcToEngine = (ipcToEngine_t*) hwlib.resolve("ipcToEngine");
    30     flibInit = (flibInit_t*) hwlib.resolve("flibInit");
    30     flibInit = (flibInit_t*) hwlib.resolve("flibInit");
    31     flibFree = (flibFree_t*) hwlib.resolve("flibFree");
    31     flibFree = (flibFree_t*) hwlib.resolve("flibFree");
    32 
    32 
    33     flibInit(".", "~/.hedgewars");
    33     flibInit(".", "~/.hedgewars");
    34     registerIPCCallback(this, &engineMessageCallback);
    34     registerPreviewCallback(this, &enginePreviewCallback);
    35 }
    35 }
    36 
    36 
    37 HWEngine::~HWEngine()
    37 HWEngine::~HWEngine()
    38 {
    38 {
    39     flibFree();
    39     flibFree();
    78     qDebug() << "sendIPC: len = " << len;
    78     qDebug() << "sendIPC: len = " << len;
    79 
    79 
    80     ipcToEngine(b.constData(), len);
    80     ipcToEngine(b.constData(), len);
    81 }
    81 }
    82 
    82 
    83 void HWEngine::engineMessageCallback(void *context, const char * msg, quint32 len)
    83 void HWEngine::enginePreviewCallback(void *context, const char * msg, quint32 len)
    84 {
    84 {
    85     HWEngine * obj = (HWEngine *)context;
    85     HWEngine * obj = (HWEngine *)context;
    86     QByteArray b = QByteArray::fromRawData(msg, len);
    86     QByteArray b = QByteArray::fromRawData(msg, len);
    87 
    87 
    88     qDebug() << "FLIPC in" << b.size() << b;
    88     qDebug() << "FLIPC in" << b.size() << b;
    90     QMetaObject::invokeMethod(obj, "engineMessageHandler", Qt::QueuedConnection, Q_ARG(QByteArray, b));
    90     QMetaObject::invokeMethod(obj, "engineMessageHandler", Qt::QueuedConnection, Q_ARG(QByteArray, b));
    91 }
    91 }
    92 
    92 
    93 void HWEngine::engineMessageHandler(const QByteArray &msg)
    93 void HWEngine::engineMessageHandler(const QByteArray &msg)
    94 {
    94 {
    95     PreviewImageProvider * preview = (PreviewImageProvider *)m_engine->imageProvider(QLatin1String("preview"));
    95     if(msg.size() == 128 * 256)
    96     preview->setPixmap(msg);
    96     {
    97     emit previewImageChanged();
    97         PreviewImageProvider * preview = (PreviewImageProvider *)m_engine->imageProvider(QLatin1String("preview"));
       
    98         preview->setPixmap(msg);
       
    99         emit previewImageChanged();
       
   100     }
    98 }
   101 }
    99 
   102 
   100 QString HWEngine::currentSeed()
   103 QString HWEngine::currentSeed()
   101 {
   104 {
   102     return m_seed;
   105     return m_seed;