Beispiel #1
0
static long msgProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
    MprThread   *tp;
    char        buf[ME_MAX_FNAME];

    switch (msg) {
    case WM_DESTROY:
    case WM_QUIT:
        mprShutdown(0, -1, 0);
        break;
    
    case APPWEB_MONITOR_MESSAGE:
        return monitorEvent(hwnd, wp, lp);

    case WM_COMMAND:
        switch (LOWORD(wp)) {
        case MA_MENU_STATUS:
            break;

        case MA_MENU_DOC:
            runBrowser("http://embedthis.com/appweb/doc/index.html");
            break;

#if UNUSED
        case MA_MENU_MANAGE:
            runBrowser("/index.html");
            break;
#endif
        case MA_MENU_START:
            tp = mprCreateThread("startService", startService, 0, 0);
            mprStartThread(tp);
            break;

        case MA_MENU_STOP:
            tp = mprCreateThread("stopService", stopService, 0, 0);
            mprStartThread(tp);
            break;

        case MA_MENU_ABOUT:
            /*
                Single-threaded users beware. This blocks !!
             */
            fmt(buf, sizeof(buf), "%s %s", ME_TITLE, ME_VERSION);
            MessageBoxEx(hwnd, buf, mprGetAppTitle(), MB_OK, 0);
            break;

        case MA_MENU_EXIT:
            PostMessage(hwnd, WM_QUIT, 0, 0L);
            break;

        default:
            return (long) DefWindowProc(hwnd, msg, wp, lp);
        }
        break;

    default:
        return (long) DefWindowProc(hwnd, msg, wp, lp);
    }
    return 0;
}
Beispiel #2
0
static long msgProc(HWND hwnd, UINT msg, UINT wp, LPARAM lp)
{
    MprThread   *tp;
    char        buf[MPR_MAX_FNAME];

    switch (msg) {
    case WM_DESTROY:
    case WM_QUIT:
        mprTerminate(MPR_EXIT_GRACEFUL, -1);
        break;
    
    case APPWEB_MONITOR_MESSAGE:
        return monitorEvent(hwnd, wp, lp);

    case WM_COMMAND:
        switch (LOWORD(wp)) {
        case MA_MENU_STATUS:
            break;

        case MA_MENU_DOC:
            runBrowser("/doc/index.html");
            break;

        case MA_MENU_MANAGE:
            runBrowser("/index.html");
            break;

        case MA_MENU_START:
            tp = mprCreateThread("startService", startService, 0, 0);
            mprStartThread(tp);
            break;

        case MA_MENU_STOP:
            tp = mprCreateThread("stopService", stopService, 0, 0);
            mprStartThread(tp);
            break;

        case MA_MENU_ABOUT:
            /*
                Single-threaded users beware. This blocks !!
             */
            mprSprintf(buf, sizeof(buf), "%s %s-%s", BIT_TITLE, BIT_VERSION, BIT_BUILD_NUMBER);
            MessageBoxEx(hwnd, buf, mprGetAppTitle(), MB_OK, 0);
            break;

        case MA_MENU_EXIT:
            PostMessage(hwnd, WM_QUIT, 0, 0L);
            break;

        default:
            return (long) DefWindowProc(hwnd, msg, wp, lp);
        }
        break;

    default:
        return (long) DefWindowProc(hwnd, msg, wp, lp);
    }
    return 0;
}
Beispiel #3
0
void MidiJackDevice::recordEvent(MidiRecordEvent& event)/*{{{*/
{
    if (audio->isPlaying())
        event.setLoopNum(audio->loopCount());

    if (midiInputTrace)
    {
        printf("Jack MidiInput: ");
        event.dump();
    }

    int typ = event.type();

    if (_port != -1)
    {
        //call our midimonitor with the data, it can then decide what to do
        monitorEvent(event);
    }

    //
    //  process midi event input filtering and
    //    transformation
    //

    processMidiInputTransformPlugins(event);

    if (filterEvent(event, midiRecordType, false))
        return;

    if (!applyMidiInputTransformation(event))
    {
        if (midiInputTrace)
            printf("   midi input transformation: event filtered\n");
        return;
    }

    //
    // transfer noteOn events to gui for step recording and keyboard
    // remote control
    //
    if (typ == ME_NOTEON)
    {
        int pv = ((event.dataA() & 0xff) << 8) + (event.dataB() & 0xff);
        song->putEvent(pv);
    }
    //This was not sending noteoff events at all sometimes causing strange endless note in step rec
    else if(typ == ME_NOTEOFF)
    {
        int pv = ((event.dataA() & 0xff) << 8) + (0x00);
        song->putEvent(pv);
    }

    // Do not bother recording if it is NOT actually being used by a port.
    // Because from this point on, process handles things, by selected port.
    if (_port == -1)
        return;

    // Split the events up into channel fifos. Special 'channel' number 17 for sysex events.
    unsigned int ch = (typ == ME_SYSEX) ? kMaxMidiChannels : event.channel();
    if (_recordFifo[ch].put(MidiPlayEvent(event)))
        printf("MidiJackDevice::recordEvent: fifo channel %d overflow\n", ch);
}/*}}}*/
Beispiel #4
0
static long msgProc(HWND hwnd, uint msg, uint wp, long lp)
{
    char    buf[MPR_MAX_FNAME];

    switch (msg) {
    case WM_DESTROY:
    case WM_QUIT:
        mprSignalExit(mpr);
        break;
    
    case APPWEB_MONITOR_MESSAGE:
        return monitorEvent(hwnd, wp, lp);

    case WM_COMMAND:
        switch (LOWORD(wp)) {
        case MA_MENU_STATUS:
            break;

        case MA_MENU_DOC:
            runBrowser("/doc/index.html");
            break;

        case MA_MENU_MANAGE:
            runBrowser("/index.html");
            break;

        case MA_MENU_START:
            startService();
            break;

        case MA_MENU_STOP:
            stopService();
            break;

        case MA_MENU_ABOUT:
            /*
             *  Single-threaded users beware. This blocks !!
             */
            mprSprintf(buf, sizeof(buf), "%s %s-%s", BLD_NAME, BLD_VERSION, BLD_NUMBER);
            MessageBoxEx(NULL, buf, mprGetAppTitle(mpr), MB_OK, 0);
            break;

        case MA_MENU_EXIT:
            /* 
             *  FUTURE
             *
             *  h = CreateDialog(appInst, MAKEINTRESOURCE(IDD_EXIT), appHwnd, dialogProc);
             *  ShowWindow(h, SW_SHOW);
             */
            PostMessage(hwnd, WM_QUIT, 0, 0L);
            break;

        default:
            return DefWindowProc(hwnd, msg, wp, lp);
        }
        break;

    default:
        return DefWindowProc(hwnd, msg, wp, lp);
    }
    return 0;
}