[gephex-devel] gephex--main--0.4--patch-1864
gephex at sonnenland.kexbox.org
gephex at sonnenland.kexbox.org
Mon Mar 21 19:17:56 CET 2005
Archive: gephex at gephex.org--2004
New revision: gephex--main--0.4--patch-1864
--
Revision: gephex--main--0.4--patch-1864
Archive: gephex at gephex.org--2004
Creator: The Gephex Source Archive <gephex at gephex.org>
Date: Mon Mar 21 19:14:37 CET 2005
Standard-date: 2005-03-21 18:14:37 GMT
New-files: modules/src/midiinmodule/.arch-ids/alsaseqmidiindriver.cpp.id
modules/src/midiinmodule/.arch-ids/alsaseqmidiindriver.h.id
modules/src/midiinmodule/alsaseqmidiindriver.cpp
modules/src/midiinmodule/alsaseqmidiindriver.h
Modified-files: modules/src/midiinmodule/Makefile.am
modules/src/midiinmodule/alsamidiindriver.cpp
modules/src/midiinmodule/midiinmodule.cpp
modules/src/midiinmodule/midiinmodule.spec
New-patches: gephex at gephex.org--2004/gephex--main--0.4--patch-1864
martin at gephex.org--2004/gephex--alsaseq-midiin--0.4--base-0
martin at gephex.org--2004/gephex--alsaseq-midiin--0.4--patch-1
martin at gephex.org--2004/gephex--alsaseq-midiin--0.4--patch-2
martin at gephex.org--2004/gephex--alsaseq-midiin--0.4--patch-3
Summary: [MERGE-REQUEST] midi input changes
Keywords:
Patches applied:
* martin at gephex.org--2004/gephex--alsaseq-midiin--0.4--base-0
tag of martin at gephex.org--2004/gephex--martin--0.4--patch-53
* martin at gephex.org--2004/gephex--alsaseq-midiin--0.4--patch-1
new linux alsa-sequencer midi input
* martin at gephex.org--2004/gephex--alsaseq-midiin--0.4--patch-2
better error handling in midiin and bugfixes in alsaseq
* martin at gephex.org--2004/gephex--alsaseq-midiin--0.4--patch-3
sync with main
* added directories
{arch}/gephex/gephex--alsaseq-midiin
{arch}/gephex/gephex--alsaseq-midiin/gephex--alsaseq-midiin--0.4
{arch}/gephex/gephex--alsaseq-midiin/gephex--alsaseq-midiin--0.4/martin at gephex.org--2004
{arch}/gephex/gephex--alsaseq-midiin/gephex--alsaseq-midiin--0.4/martin at gephex.org--2004/patch-log
* added files
modules/src/midiinmodule/.arch-ids/alsaseqmidiindriver.cpp.id
modules/src/midiinmodule/.arch-ids/alsaseqmidiindriver.h.id
modules/src/midiinmodule/alsaseqmidiindriver.cpp
modules/src/midiinmodule/alsaseqmidiindriver.h
{arch}/gephex/gephex--alsaseq-midiin/gephex--alsaseq-midiin--0.4/martin at gephex.org--2004/patch-log/base-0
{arch}/gephex/gephex--alsaseq-midiin/gephex--alsaseq-midiin--0.4/martin at gephex.org--2004/patch-log/patch-1
{arch}/gephex/gephex--alsaseq-midiin/gephex--alsaseq-midiin--0.4/martin at gephex.org--2004/patch-log/patch-2
{arch}/gephex/gephex--alsaseq-midiin/gephex--alsaseq-midiin--0.4/martin at gephex.org--2004/patch-log/patch-3
{arch}/gephex/gephex--main/gephex--main--0.4/gephex at gephex.org--2004/patch-log/patch-1864
* modified files
--- orig/modules/src/midiinmodule/Makefile.am
+++ mod/modules/src/midiinmodule/Makefile.am
@@ -13,7 +13,9 @@
if WITH_ASOUNDLIB
ALSALIB_sOURCES = \
alsamidiindriver.cpp \
- alsamidiindriver.h
+ alsamidiindriver.h \
+ alsaseqmidiindriver.cpp \
+ alsaseqmidiindriver.h
ALSALIB_lDFLAGS = -lasound
endif
--- orig/modules/src/midiinmodule/alsamidiindriver.cpp
+++ mod/modules/src/midiinmodule/alsamidiindriver.cpp
@@ -63,6 +63,7 @@
std::ostringstream error_msg;
error_msg << "snd_rawmidi_open '" << device_name << "' failed: "
<< err;
+ m_impl->handle_in=0;
throw std::runtime_error(error_msg.str().c_str());
}
}
--- orig/modules/src/midiinmodule/midiinmodule.cpp
+++ mod/modules/src/midiinmodule/midiinmodule.cpp
@@ -33,12 +33,14 @@
#endif
#if defined(WITH_ASOUNDLIB)
#include "alsamidiindriver.h"
+#include "alsaseqmidiindriver.h"
#endif
#if defined(OS_WIN32)
#include "wavemidiindriver.h"
#endif
+#include <cassert>
typedef struct _MyInstance {
@@ -111,97 +113,109 @@
int device = trim_int(inst->in_device->number, 0, 256);
const char* driver_name = inst->in_driver->text;
- if (my->driver_name == 0 ||
- my->drv == 0 ||
- strcmp(driver_name, my->driver_name) != 0)
+ try
{
- delete my->driver_name;
- my->driver_name = strcopy(driver_name);
-
- if (my->drv)
- {
- my->drv->close();
- delete my->drv;
- }
+
+ if (my->driver_name == 0 ||
+ my->drv == 0 ||
+ strcmp(driver_name, my->driver_name) != 0)
+ {
+ delete[] my->driver_name;
+ my->driver_name = strcopy(driver_name);
+ delete my->drv;
- if (strcmp(driver_name, "default") == 0)
- {
+ if (strcmp(driver_name, "default") == 0)
+ {
#if defined(WITH_OSS)
- my->drv = new OSSMidiInDriver();
+ my->drv = new OSSMidiInDriver();
#elif defined(WITH_ASOUNDLIB)
- my->drv = new OSSMidiInDriver();
-#elif defined(OS_WIN32)
- my->drv = new WaveMidiInDriver();
+ my->drv = new AlsaSeqMidiInDriver();
+#elif defined(OS_WIN32)
+ my->drv = new WaveMidiInDriver();
#endif
- }
+ }
#if defined(WITH_OSS)
- else if (strcmp(driver_name, "oss") == 0)
- {
- my->drv = new OSSMidiInDriver();
- }
+ else if (strcmp(driver_name, "oss") == 0)
+ {
+ my->drv = new OSSMidiInDriver();
+ }
#endif
#if defined(WITH_ASOUNDLIB)
- else if (strcmp(driver_name, "alsa") == 0)
- {
- my->drv = new AlsaMidiInDriver();
- }
+ else if (strcmp(driver_name, "alsa") == 0)
+ {
+ my->drv = new AlsaMidiInDriver();
+ }
+ else if (strcmp(driver_name, "alsaseq") == 0)
+ {
+ my->drv = new AlsaSeqMidiInDriver();
+ }
#endif
#if defined(OS_WIN32)
- else if (strcmp(driver_name, "wavein") == 0)
- {
- my->drv = new WaveMidiInDriver();
- }
+ else if (strcmp(driver_name, "wavein") == 0)
+ {
+ my->drv = new WaveMidiInDriver();
+ }
#endif
- else
- {
+ else
+ {
#if defined(OS_WIN32)
- my->drv = new WaveMidiInDriver();
- s_log(2, "Unkown driver - using WaveIn driver");
+ my->drv = new WaveMidiInDriver();
+ s_log(2, "Unkown driver - using WaveIn driver");
#elif defined(WITH_OSS)
- my->drv = new OSSMidiInDriver();
- s_log(2, "Unkown driver - using OSS driver");
-#elif defined(WITH_OSS)
- my->drv = new AlsaMidiInDriver();
- s_log(2, "Unkown driver - using alsa driver");
-#endif
- }
- }
-
- if (device != my->device || !my->drv->is_open())
- {
- my->device = device;
+ my->drv = new OSSMidiInDriver();
+ s_log(2, "Unkown driver - using OSS driver");
+#elif defined(WITH_ALSA)
+ my->drv = new AlsaMidiInDriver();
+ s_log(2, "Unkown driver - using alsa driver");
+#endif
+ }
+ }
+
+ assert(my->drv != 0);
+
+ if (device != my->device || !my->drv->is_open())
+ {
+ my->device = device;
- if (my->drv->is_open())
- my->drv->close();
+ if (my->drv->is_open())
+ my->drv->close();
+
+ assert(!my->drv->is_open());
- try
- {
- my->drv->open(device);
- }
- catch (std::exception& e)
- {
- char buf[128];
- snprintf(buf, sizeof(buf), "Error while opening: %s", e.what());
- s_log(0, buf);
- }
- }
+ try
+ {
+ my->drv->open(device);
+ }
+ catch (std::exception& e)
+ {
+ char buf[128];
+ snprintf(buf, sizeof(buf), "Error while opening: %s", e.what());
+ s_log(0, buf);
+ throw;
+ }
+ assert(my->drv->is_open());
+ }
- if (!my->drv->is_open())
- return;
-
- try
- {
- static const int MAX_MSG_LEN = 1024;
- unsigned char buffer[MAX_MSG_LEN];
- int len = my->drv->read(buffer, sizeof(buffer));
+ assert(my->drv->is_open());
- midi_set_buffer(inst->out_r, buffer, len);
+ try
+ {
+ static const int MAX_MSG_LEN = 1024;
+ unsigned char buffer[MAX_MSG_LEN];
+ int len = my->drv->read(buffer, sizeof(buffer));
+
+ midi_set_buffer(inst->out_r, buffer, len);
+ }
+ catch (std::exception& e)
+ {
+ char buf[128];
+ snprintf(buf, sizeof(buf), "Error while reading: %s", e.what());
+ s_log(0, buf);
+ throw;
+ }
}
catch (std::exception& e)
{
- char buf[128];
- snprintf(buf, sizeof(buf), "Error while reading: %s", e.what());
- s_log(0, buf);
+ midi_set_buffer(inst->out_r, 0, 0);
}
-
}
--- orig/modules/src/midiinmodule/midiinmodule.spec
+++ mod/modules/src/midiinmodule/midiinmodule.spec
@@ -36,7 +36,7 @@
hidden = true
default = default
widget_type = combo_box
- values = default,wavein,oss,alsa
+ values = default,wavein,oss,alsa,alsaseq
}
}
More information about the gephex-devel
mailing list