equal
deleted
inserted
replaced
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; |