summaryrefslogtreecommitdiff
path: root/audio/spiralsynth/patches/patch-an
blob: 1b533c75090c4c669ef524fa566a37a8c22ff3f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
$NetBSD: patch-an,v 1.3 2006/01/05 15:33:00 joerg Exp $

--- SpiralSound/Midi.C.orig	2002-06-11 22:08:56.000000000 +0000
+++ SpiralSound/Midi.C
@@ -27,6 +27,10 @@
 #include <FL/Fl.h>
 #endif
 
+#if defined(__DragonFly__) && !defined(O_SYNC)
+#define O_SYNC O_FSYNC
+#endif
+
 static const int MIDI_SCANBUFSIZE=256;
 static const int MIDI_KEYOFFSET=0;
 
@@ -76,12 +80,12 @@ MidiDevice::~MidiDevice() 
 void MidiDevice::Close()
 {
 	pthread_mutex_lock(m_Mutex);
-	pthread_cancel(m_MidiReader); 
+	if (m_MidiReader != NULL)
+		pthread_cancel(m_MidiReader); 
 	pthread_mutex_unlock(m_Mutex);
 	pthread_mutex_destroy(m_Mutex);
 		
 	close(m_MidiFd);
-	close(m_MidiWrFd);
 	cerr<<"Closed midi device"<<endl;
 }
 
@@ -90,24 +94,19 @@ void MidiDevice::Open()
 {
 	//if (!SpiralInfo::WANTMIDI) return;
 	
-	m_MidiFd = open(m_DeviceName.c_str(),O_RDONLY|O_SYNC);  
-	if (!m_MidiFd) 
-	{
-		cerr<<"Couldn't open midi for reading ["<<m_DeviceName<<"]"<<endl;
-		return;
-	}
-	
-	m_MidiWrFd = open(m_DeviceName.c_str(),O_WRONLY);  
-	if (!m_MidiWrFd) 
+	m_Mutex = new pthread_mutex_t;
+    pthread_mutex_init(m_Mutex, NULL);
+	m_MidiReader = NULL;
+
+	m_MidiWrFd = m_MidiFd = open(m_DeviceName.c_str(),O_RDWR|O_SYNC);  
+	if (m_MidiFd == -1) 
 	{
-		cerr<<"Couldn't open midi for writing ["<<m_DeviceName<<"]"<<endl;
+		cerr<<"Couldn't open midi ["<<m_DeviceName<<"]"<<endl;
 		return;
 	}
 	
 	cerr<<"Opened midi device ["<<m_DeviceName<<"]"<<endl;
 	
-	m_Mutex = new pthread_mutex_t;
-    pthread_mutex_init(m_Mutex, NULL);
     int ret=pthread_create(&m_MidiReader,NULL,(void*(*)(void*))MidiDevice::MidiReaderCallback,(void*)this);	
 }