Skip to content

Commit 7aca287

Browse files
committed
Fix VST application console and messaging.
1 parent c0f2596 commit 7aca287

3 files changed

Lines changed: 23 additions & 11 deletions

File tree

source/qvst/common/dllmain.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,11 @@ BOOL WINAPI DllMain (HINSTANCE hInst, DWORD dwReason, LPVOID /*lpvReserved*/)
6565
}
6666

6767
// Initialize QVst application instance
68-
QVstApplication::createInstance(hInst);
68+
QVstApplication::Flags flags = QVstApplication::Flag_None;
69+
#ifdef QVST_CONSOLE
70+
flags |= QVstApplication::Flag_CreateConsole;
71+
#endif
72+
QVstApplication::createInstance(hInst, flags);
6973
} else if (dwReason == DLL_PROCESS_DETACH) {
7074
// Delete QVst application instance
7175
delete qApp;

source/qvst/include/QVstApplication.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@ class QVstApplication : public QApplication
99
Q_OBJECT
1010
public:
1111

12-
static QVstApplication* createInstance(Qt::HANDLE handle);
12+
enum Flags {
13+
Flag_None = 0,
14+
Flag_CreateConsole = 1
15+
};
16+
17+
static QVstApplication* createInstance(Qt::HANDLE handle, Flags flags = Flag_None);
1318
static QVstApplication* instance();
1419

1520
~QVstApplication();
@@ -20,7 +25,7 @@ class QVstApplication : public QApplication
2025

2126
struct Private;
2227

23-
QVstApplication(int &argc, char **argv, Qt::HANDLE handle);
28+
QVstApplication(int &argc, char **argv, Qt::HANDLE handle, Flags flags = Flag_None);
2429

2530
Private *m;
2631
};

source/qvst/src/QVstApplication.cpp

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ static HHOOK s_hHook;
1111
LRESULT CALLBACK msgFilterProc(int nCode, WPARAM wParam, LPARAM lParam)
1212
{
1313
if (qApp) {
14-
qApp->sendPostedEvents(0, -1);
14+
qApp->sendPostedEvents();
1515
}
1616
return CallNextHookEx(s_hHook, nCode, wParam, lParam);
1717
}
@@ -41,16 +41,19 @@ static void msgHandler(QtMsgType type, const QMessageLogContext &contect, const
4141
}
4242
}
4343

44-
QVstApplication* QVstApplication::createInstance(Qt::HANDLE handle)
44+
QVstApplication* QVstApplication::createInstance(Qt::HANDLE handle, Flags flags)
4545
{
4646
QApplication *pGuiApp = qApp;
4747
if (pGuiApp) {
4848
return static_cast<QVstApplication*>(pGuiApp);
4949
}
5050

5151
int argc = 0;
52-
QVstApplication *pInstance = new QVstApplication(argc, nullptr, handle);
53-
qInstallMessageHandler(msgHandler);
52+
QVstApplication *pInstance = new QVstApplication(argc, nullptr, handle, flags);
53+
if ((flags & Flag_CreateConsole) != 0) {
54+
// Install log messages handler only if there is a console
55+
qInstallMessageHandler(msgHandler);
56+
}
5457

5558
return pInstance;
5659
}
@@ -60,15 +63,15 @@ QVstApplication* QVstApplication::instance()
6063
return static_cast<QVstApplication*>(qApp);
6164
}
6265

63-
QVstApplication::QVstApplication(int &argc, char **argv, Qt::HANDLE handle)
66+
QVstApplication::QVstApplication(int &argc, char **argv, Qt::HANDLE handle, Flags flags)
6467
: QApplication(argc, argv)
6568
{
6669
m = new Private;
6770
m->handle = handle;
6871
m->pConsole = nullptr;
69-
#ifdef QVST_CONSOLE
70-
m->pConsole = new QVstConsole(this);
71-
#endif
72+
if ((flags & Flag_CreateConsole) != 0) {
73+
m->pConsole = new QVstConsole(this);
74+
}
7275

7376
#ifdef WIN32
7477
s_hHook = SetWindowsHookEx(WH_GETMESSAGE, msgFilterProc, 0, GetCurrentThreadId());

0 commit comments

Comments
 (0)