oops, jessie backport shows code and comment bugs here
[alioth/musescore.git] / debian / patches / debian-specific / kfreebsd-oss-salsa.diff
1 Description: Add function missing in OSS-sALSA to fix non-Linux compile;
2  fixup int vs. ssize_t issue in related code to ensure it will work.
3 Author: mirabilos <tg@debian.org>
4 Forwarded: not-needed
5 Justification: Workaround for bug in another package, Debian-specific
6 Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=870787
7
8 --- a/mscore/mididriver.cpp
9 +++ b/mscore/mididriver.cpp
10 @@ -101,6 +101,28 @@ bool Port::operator<(const Port& p) cons
11  #include "alsa.h"
12  #include "alsamidi.h"
13  
14 +// The following is a Debian-specific hack which is likely to
15 +// not work forever, but needed right now: on kfreebsd and hurd,
16 +// we do not have ALSA but OSS provides the salsa compatibility
17 +// layer, which currently lacks a single, trivial function. We
18 +// need to distinguish salsa from ALSA (hard because the former
19 +// use, in Debian, the latter’s includes); one hackish way is
20 +// to use the reported library version as salsa still reports
21 +// version 1.0.x whereas ALSA on stretch shows 1.1.x — jessie
22 +// also has 1.0.x, but we still can simply inline the gist as
23 +// the implementation is identical across OSS/jessie/buster.
24 +// This is now https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=870787
25 +#if (SND_LIB_MAJOR < 2) && (SND_LIB_MINOR < 1)
26 +#define snd_seq_event_length(ev) __extension__({               \
27 +       ssize_t snd_seq_event_length__len;                      \
28 +                                                               \
29 +       snd_seq_event_length__len = sizeof(snd_seq_event_t);    \
30 +       if (snd_seq_ev_is_variable(ev))                         \
31 +               snd_seq_event_length__len += ev->data.ext.len;  \
32 +       (snd_seq_event_length__len);                            \
33 +})
34 +#endif
35 +
36  namespace Ms {
37  static const unsigned int inCap  = SND_SEQ_PORT_CAP_SUBS_READ;
38  static const unsigned int outCap = SND_SEQ_PORT_CAP_SUBS_WRITE;
39 @@ -532,11 +554,11 @@ void AlsaMidiDriver::write(const Event&
40  
41  bool AlsaMidiDriver::putEvent(snd_seq_event_t* event)
42        {
43 -      int error;
44 +      ssize_t error;
45  
46        do {
47              error   = snd_seq_event_output_direct(alsaSeq, event);
48 -            int len = snd_seq_event_length(event);
49 +            ssize_t len = snd_seq_event_length(event);
50              if (error == len) {
51                    return false;
52                    }
53 @@ -551,7 +573,7 @@ bool AlsaMidiDriver::putEvent(snd_seq_ev
54                          }
55                    }
56              else
57 -                  qDebug("MidiAlsaDevice::putEvent(): midi write returns %d, expected %d: %s",
58 +                  qDebug("MidiAlsaDevice::putEvent(): midi write returns %zd, expected %zd: %s",
59                       error, len, snd_strerror(error));
60              } while (error == -12);
61        return true;