diff options
author | 2018-02-21 11:42:32 +0100 | |
---|---|---|
committer | 2018-02-21 12:08:50 +0100 | |
commit | 18dbd4fcf1bca48ad8b368346bfe73e2f2f40f02 (patch) | |
tree | a3175df1defba2ec278a85e560283d37d0fc9849 /media-sound/audacity | |
parent | net-mail/mailman: Version bump. (diff) | |
download | gentoo-18dbd4fcf1bca48ad8b368346bfe73e2f2f40f02.tar.gz gentoo-18dbd4fcf1bca48ad8b368346bfe73e2f2f40f02.tar.bz2 gentoo-18dbd4fcf1bca48ad8b368346bfe73e2f2f40f02.zip |
media-sound/audacity: Fixed compilation with USE="-midi"
Thanks to Matt Whitlock for providing the initial patch.
Closes: https://bugs.gentoo.org/637110
Package-Manager: Portage-2.3.24, Repoman-2.3.6
Diffstat (limited to 'media-sound/audacity')
-rw-r--r-- | media-sound/audacity/audacity-2.2.2.ebuild | 8 | ||||
-rw-r--r-- | media-sound/audacity/files/audacity-2.2.2-midi.patch | 168 |
2 files changed, 176 insertions, 0 deletions
diff --git a/media-sound/audacity/audacity-2.2.2.ebuild b/media-sound/audacity/audacity-2.2.2.ebuild index af62f464499f..cb2b8ea861f4 100644 --- a/media-sound/audacity/audacity-2.2.2.ebuild +++ b/media-sound/audacity/audacity-2.2.2.ebuild @@ -49,6 +49,14 @@ REQUIRED_USE="soundtouch? ( midi )" S="${WORKDIR}/${MY_P}-rc1" +PATCHES=( + "${FILESDIR}/${PN}-2.2.2-midi.patch" +) + +src_prepare() { + epatch "${PATCHES[@]}" +} + src_configure() { local WX_GTK_VER="3.0" need-wxwidgets unicode diff --git a/media-sound/audacity/files/audacity-2.2.2-midi.patch b/media-sound/audacity/files/audacity-2.2.2-midi.patch new file mode 100644 index 000000000000..10a0f1f6eb04 --- /dev/null +++ b/media-sound/audacity/files/audacity-2.2.2-midi.patch @@ -0,0 +1,168 @@ +https://bugs.gentoo.org/637110 + +Original patch by Matt Whitlock +Forward-ported from version 2.2.0 to 2.2.2 + +--- audacity-minsrc-2.2.2-rc1/src/AudioIO.cpp ++++ audacity-minsrc-2.2.2-rc1/src/AudioIO.cpp +@@ -976,6 +976,7 @@ + }; + #endif + ++#ifdef EXPERIMENTAL_MIDI_OUT + // return the system time as a double + static double streamStartTime = 0; // bias system time to small number + +@@ -995,6 +996,7 @@ + + return PaUtil_GetTime() - streamStartTime; + } ++#endif + + const int AudioIO::StandardRates[] = { + 8000, +@@ -1803,6 +1805,7 @@ + } + #endif + ++#ifdef EXPERIMENTAL_MIDI_OUT + // We use audio latency to estimate how far ahead of DACS we are writing + if (mPortStreamV19 != NULL && mLastPaError == paNoError) { + const PaStreamInfo* info = Pa_GetStreamInfo(mPortStreamV19); +@@ -1811,6 +1814,7 @@ + mAudioOutLatency = info->outputLatency; + mSystemMinusAudioTimePlusLatency += mAudioOutLatency; + } ++#endif + + return (mLastPaError == paNoError); + } +@@ -1955,8 +1959,10 @@ + + double playbackTime = 4.0; + ++#ifdef EXPERIMENTAL_MIDI_OUT + streamStartTime = 0; + streamStartTime = SystemTime(mUsingAlsa); ++#endif + + #ifdef EXPERIMENTAL_SCRUBBING_SUPPORT + bool scrubbing = (options.pScrubbingOptions != nullptr); +@@ -2830,7 +2836,9 @@ + + mPlaybackTracks.clear(); + mCaptureTracks.clear(); ++#ifdef HAVE_MIDI + mMidiPlaybackTracks.clear(); ++#endif + + #ifdef EXPERIMENTAL_SCRUBBING_SUPPORT + mScrubQueue.reset(); +@@ -4669,13 +4677,13 @@ + (float *)alloca(framesPerBuffer*numPlaybackChannels * sizeof(float)) : + (float *)outputBuffer; + ++#ifdef EXPERIMENTAL_MIDI_OUT + if (gAudioIO->mCallbackCount++ == 0) { + // This is effectively mSystemMinusAudioTime when the buffer is empty: + gAudioIO->mStartTime = SystemTime(gAudioIO->mUsingAlsa) - gAudioIO->mT0; + // later, mStartTime - mSystemMinusAudioTime will tell us latency + } + +-#ifdef EXPERIMENTAL_MIDI_OUT + /* GSW: Save timeInfo in case MidiPlayback needs it */ + gAudioIO->mAudioCallbackClockTime = PaUtil_GetTime(); + +@@ -5051,7 +5059,9 @@ + : gAudioIO->mTime >= gAudioIO->mT1)) + // PRL: singalling MIDI output complete is necessary if + // not USE_MIDI_THREAD, otherwise it's harmlessly redundant ++#ifdef EXPERIMENTAL_MIDI_OUT + gAudioIO->mMidiOutputComplete = true, ++#endif + callbackReturn = paComplete; + } + +@@ -5114,7 +5124,9 @@ + + // PRL: singalling MIDI output complete is necessary if + // not USE_MIDI_THREAD, otherwise it's harmlessly redundant ++#ifdef EXPERIMENTAL_MIDI_OUT + gAudioIO->mMidiOutputComplete = true, ++#endif + callbackReturn = paComplete; + } + } +--- audacity-minsrc-2.2.2-rc1/src/Project.cpp ++++ audacity-minsrc-2.2.2-rc1/src/Project.cpp +@@ -460,10 +460,11 @@ + } ); + + for (const auto &name : sortednames) { +- ++#ifdef USE_MIDI + if (Importer::IsMidi(name)) + AudacityProject::DoImportMIDI(mProject, name); + else ++#endif + mProject->Import(name); + } + +@@ -3046,9 +3047,11 @@ + #endif + + { ++#ifdef USE_MIDI + if (Importer::IsMidi(fileName)) + DoImportMIDI(this, fileName); + else ++#endif + Import(fileName); + + ZoomAfterImport(nullptr); +--- audacity-minsrc-2.2.2-rc1/src/tracks/playabletrack/notetrack/ui/NoteTrackButtonHandle.cpp ++++ audacity-minsrc-2.2.2-rc1/src/tracks/playabletrack/notetrack/ui/NoteTrackButtonHandle.cpp +@@ -9,6 +9,9 @@ + **********************************************************************/ + + #include "../../../../Audacity.h" ++ ++#ifdef USE_MIDI ++ + #include "NoteTrackButtonHandle.h" + + #include "../../../../HitTestResult.h" +@@ -113,3 +116,4 @@ + return RefreshCode::RefreshNone; + } + ++#endif +--- audacity-minsrc-2.2.2-rc1/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp ++++ audacity-minsrc-2.2.2-rc1/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp +@@ -9,6 +9,9 @@ + **********************************************************************/ + + #include "../../../../Audacity.h" ++ ++#ifdef USE_MIDI ++ + #include "NoteTrackVZoomHandle.h" + #include "../../../../Experimental.h" + #include "NoteTrackVRulerControls.h" +@@ -332,3 +335,5 @@ + TrackVRulerControls::DrawZooming + ( dc, mRect, panelRect, mZoomStart, mZoomEnd ); + } ++ ++#endif +--- audacity-minsrc-2.2.2-rc1/src/tracks/ui/TimeShiftHandle.cpp ++++ audacity-minsrc-2.2.2-rc1/src/tracks/ui/TimeShiftHandle.cpp +@@ -604,7 +604,7 @@ + { + trySnap = true; + if (pTrack->GetKind() == Track::Wave) { +- auto wt = static_cast<const WaveTrack *>(pTrack); ++ auto wt = static_cast<const WaveTrack *>(pTrack.get()); + const double rate = wt->GetRate(); + // set it to a sample point + desiredSlideAmount = rint(desiredSlideAmount * rate) / rate; |