rpms/audacity/F-10 audacity-1.3.8-gsocket-conflict.patch, NONE, 1.1 audacity-1.3.9-labelpopup.patch, NONE, 1.1 audacity-1.3.9-labeltrack-crash.patch, NONE, 1.1 audacity-1.3.9-libdir.patch, NONE, 1.1 audacity.spec, 1.66, 1.67 audacity-1.3.6-flac-import.patch, 1.2, NONE audacity-1.3.7-audiodevdefaults.patch, 1.1, NONE audacity-1.3.7-libdir.patch, 1.1, NONE

Michael Schwendt mschwendt at fedoraproject.org
Tue Oct 13 11:24:13 UTC 2009


Author: mschwendt

Update of /cvs/pkgs/rpms/audacity/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv357

Modified Files:
	audacity.spec 
Added Files:
	audacity-1.3.8-gsocket-conflict.patch 
	audacity-1.3.9-labelpopup.patch 
	audacity-1.3.9-labeltrack-crash.patch 
	audacity-1.3.9-libdir.patch 
Removed Files:
	audacity-1.3.6-flac-import.patch 
	audacity-1.3.7-audiodevdefaults.patch 
	audacity-1.3.7-libdir.patch 
Log Message:
sync with F-11 for updates-testing : Audacity 1.3.9-beta

audacity-1.3.8-gsocket-conflict.patch:
 AudacityApp.cpp |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- NEW FILE audacity-1.3.8-gsocket-conflict.patch ---
diff -Nur audacity-src-1.3.8-orig/src/AudacityApp.cpp audacity-src-1.3.8/src/AudacityApp.cpp
--- audacity-src-1.3.8-orig/src/AudacityApp.cpp	2009-07-16 05:27:35.000000000 +0200
+++ audacity-src-1.3.8/src/AudacityApp.cpp	2009-07-20 23:45:41.000000000 +0200
@@ -331,7 +331,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include <dlfcn.h>
-#include <gtk/gtk.h>
+/*#include <gtk/gtk.h>*/
+#include <glib/gtypes.h>
+#include <glib-object.h>
 
 typedef struct _GnomeProgram GnomeProgram;
 typedef struct _GnomeModuleInfo GnomeModuleInfo;

audacity-1.3.9-labelpopup.patch:
 TrackPanel.cpp |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE audacity-1.3.9-labelpopup.patch ---
diff -Nur audacity-src-1.3.9-orig/src/TrackPanel.cpp audacity-src-1.3.9/src/TrackPanel.cpp
--- audacity-src-1.3.9-orig/src/TrackPanel.cpp	2009-08-31 12:45:39.000000000 +0200
+++ audacity-src-1.3.9/src/TrackPanel.cpp	2009-09-14 08:52:22.764231346 +0200
@@ -4464,7 +4464,7 @@
    }
 
    
-   if (event.RightDown()) {
+   if (event.RightUp()) {
       // popup menu for editing
       RefreshTrack(lTrack);
      

audacity-1.3.9-labeltrack-crash.patch:
 LabelTrack.cpp |  110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 LabelTrack.h   |    2 -
 Menus.cpp      |   17 +-------
 Project.cpp    |   18 +--------
 Project.h      |    4 --
 5 files changed, 112 insertions(+), 39 deletions(-)

--- NEW FILE audacity-1.3.9-labeltrack-crash.patch ---
diff -Nur audacity-src-1.3.9-orig/src/LabelTrack.cpp audacity-src-1.3.9/src/LabelTrack.cpp
--- audacity-src-1.3.9-orig/src/LabelTrack.cpp	2009-08-31 12:45:38.000000000 +0200
+++ audacity-src-1.3.9/src/LabelTrack.cpp	2009-09-12 14:59:27.000000000 +0200
@@ -57,6 +57,97 @@
 #include "Project.h"
 #include "commands/CommandManager.h"
 
+#if defined(__WXGTK__)
+// As of wxGTK 2.8.9, there is a problem in the wxClipboard class that
+// allows recursive event processing.  This problem has been corrected
+// by wxWidgets 2.9+.  However, this han't made it into a release yet,
+// so we have to work around it.
+//
+// This is done by pulling/merging in some code from wx29 and creating
+// the following class to capture events while accessing the clipboard
+// to prevent the asynchronous clipboard access from causing recursive
+// event processing.
+
+#include <wx/app.h>
+#include <wx/dynarray.h>
+
+#include <gtk/gtk.h>
+
+extern GtkWidget *wxGetRootWindow();
+
+static void main_do_event(GdkEvent *event, wxArrayPtrVoid *queue)
+{
+   switch (event->type)
+   {
+      case GDK_NOTHING:
+         // Ignore it
+      break;
+
+      case GDK_SELECTION_REQUEST:
+      case GDK_SELECTION_NOTIFY:
+      case GDK_SELECTION_CLEAR:
+#if GTK_CHECK_VERSION(2,6,0)
+      case GDK_OWNER_CHANGE:
+#endif
+         // process it now
+         gtk_main_do_event(event);
+      break;
+
+      default:
+         // process it later (but make a copy; the caller will free the event pointer)
+         queue->Add(gdk_event_copy(event));
+      break;
+   }
+
+   // don't allow idle callbacks while we're active
+   wxTheApp->SuspendIdleCallback();
+
+   return;
+}
+
+class CaptureEvents
+{
+ public:
+   CaptureEvents()
+   {
+#if wxUSE_LOG
+      // disable log flushing from here because a call to wxYield() shouldn't
+      // normally result in message boxes popping up &c
+      wxLog::Suspend();
+#endif
+
+      // temporarily replace the global GDK event handler with our function
+      gdk_event_handler_set((GdkEventFunc)main_do_event, &queue, NULL);
+
+      // temporarily suspend idle callbacks
+      wxTheApp->SuspendIdleCallback();
+   }
+
+   virtual ~CaptureEvents()
+   {
+      gdk_event_handler_set((GdkEventFunc)gtk_main_do_event, NULL, NULL);
+   
+      // put all unprocessed GDK events back in the queue
+      GdkDisplay* disp = gtk_widget_get_display(wxGetRootWindow());
+      size_t cnt = queue.GetCount();
+      for (size_t i = 0; i < cnt; i++) {
+         GdkEvent* event = (GdkEvent*)queue[i];
+         // NOTE: gdk_display_put_event makes a copy of the event passed to it
+         gdk_display_put_event(disp, event);
+         gdk_event_free(event);
+      }
+
+#if wxUSE_LOG
+      // let the logs be flashed again
+      wxLog::Resume();
+#endif
+   }
+
+ private:
+   wxArrayPtrVoid queue;
+};
+#endif
+
 wxFont LabelTrack::msFont;
 
 // static member variables.
@@ -74,13 +165,11 @@
 
 int LabelTrack::mFontHeight=-1;
 
-
 LabelTrack *TrackFactory::NewLabelTrack()
 {
    return new LabelTrack(mDirManager);
 }
 
-
 LabelTrack::LabelTrack(DirManager * projDirManager):
    Track(projDirManager),
    mbHitCenter(false),
@@ -969,6 +1058,9 @@
    
    // copy data onto clipboard
    if (wxTheClipboard->Open()) {
+#if defined(__WXGTK__)
+      CaptureEvents capture;
+#endif
       wxTheClipboard->SetData(new wxTextDataObject(data));
       wxTheClipboard->Close();
    }
@@ -1001,6 +1093,9 @@
 
    // copy the data on clipboard
    if (wxTheClipboard->Open()) {
+#if defined(__WXGTK__)
+      CaptureEvents capture;
+#endif
       wxTheClipboard->SetData(new wxTextDataObject(data));
       wxTheClipboard->Close();
    }
@@ -1021,10 +1116,13 @@
    wxString right=wxT("");
    
    // if text data is available
-   if (wxTheClipboard->IsSupported(wxDF_TEXT)) {
+   if (IsTextClipSupported()) {
       if (wxTheClipboard->Open()) {
+#if defined(__WXGTK__)
+         CaptureEvents capture;
+#endif
          wxTextDataObject data;
-         wxTheClipboard->GetData( data );
+         wxTheClipboard->GetData(data);
          wxTheClipboard->Close();
          text = data.GetText();
       }
@@ -1077,6 +1175,10 @@
 /// @return true if the text data is available in the clipboard, false otherwise
 bool LabelTrack::IsTextClipSupported()
 {
+#if defined(__WXGTK__)
+   CaptureEvents capture;
+#endif
+
    return wxTheClipboard->IsSupported(wxDF_TEXT);
 }
 
diff -Nur audacity-src-1.3.9-orig/src/LabelTrack.h audacity-src-1.3.9/src/LabelTrack.h
--- audacity-src-1.3.9-orig/src/LabelTrack.h	2009-08-31 12:45:38.000000000 +0200
+++ audacity-src-1.3.9/src/LabelTrack.h	2009-09-12 14:59:27.000000000 +0200
@@ -129,7 +129,7 @@
    bool CutSelectedText();
    bool CopySelectedText();
    bool PasteSelectedText(double sel0, double sel1);
-   bool IsTextClipSupported();
+   static bool IsTextClipSupported();
    
    // methods to set flags
    void SetDragXPos(const int d) { mDragXPos = d; };
diff -Nur audacity-src-1.3.9-orig/src/Menus.cpp audacity-src-1.3.9/src/Menus.cpp
--- audacity-src-1.3.9-orig/src/Menus.cpp	2009-08-31 12:45:38.000000000 +0200
+++ audacity-src-1.3.9/src/Menus.cpp	2009-09-12 15:18:22.150741538 +0200
@@ -1359,20 +1359,6 @@
          if (lt->IsTextSelected()) {
             flags |= CutCopyAvailableFlag;
          }
-
-         // See AudacityProject::OnUpdateUI() for an explanation
-         if (mInIdle) {
-            if (lt->IsTextClipSupported()) {
-               flags |= TextClipFlag;
-               mTextClipFlag = TextClipFlag;
-            }
-            else {
-               mTextClipFlag = 0;
-            }
-         }
-         else {
-            flags |= mTextClipFlag;
-         }
       }
       else if (t->GetKind() == Track::Wave) {
          flags |= WaveTracksExistFlag;
@@ -1422,6 +1408,9 @@
    if (GetZoom() > gMinZoom && (flags & TracksExistFlag))
       flags |= ZoomOutAvailableFlag;
 
+   if ((flags & LabelTracksExistFlag) && LabelTrack::IsTextClipSupported())
+      flags |= TextClipFlag;
+
    flags |= GetFocusedFrame();
 
    if (IsPlayRegionLocked())
diff -Nur audacity-src-1.3.9-orig/src/Project.cpp audacity-src-1.3.9/src/Project.cpp
--- audacity-src-1.3.9-orig/src/Project.cpp	2009-08-31 12:45:38.000000000 +0200
+++ audacity-src-1.3.9/src/Project.cpp	2009-09-12 15:18:29.746745064 +0200
@@ -653,13 +653,12 @@
                                  const wxSize & size)
    : wxFrame(parent, id, wxT("Audacity"), pos, size),
      mLastPlayMode(normalPlay),
+     mFreqWindow(NULL),
      mRate((double) gPrefs->Read(wxT("/SamplingRate/DefaultProjectSampleRate"), AudioIO::GetOptimalSupportedSampleRate())),
      mDefaultFormat((sampleFormat) gPrefs->
            Read(wxT("/SamplingRate/DefaultProjectSampleFormat"), floatSample)),
      mSnapTo(0), 
      mDirty(false),
-     mInIdle(false),
-     mTextClipFlag(0),
      mTrackPanel(NULL),
      mTrackFactory(NULL),
      mAutoScrolling(false),
@@ -689,8 +688,7 @@
      mWantSaveCompressed(false),
      mLastEffect(NULL),
      mLastEffectType(0),
-     mLastEffectDesc(_("Repeat Last Effect")),
-     mFreqWindow(NULL)
+     mLastEffectDesc(_("Repeat Last Effect"))
 {
    int widths[] = {-1, 130};
    mStatusBar = CreateStatusBar(2);
@@ -1644,19 +1642,7 @@
 
 void AudacityProject::OnUpdateUI(wxUpdateUIEvent & event)
 {
-   // As of wxGTK 2.8.9, there is a problem in the wxClipboard class that
-   // allows recursive event processing.  This problem has been corrected
-   // by wxWidgets changeset #45180.  However, this han't made it into a
-   // release yet, so we have to work around it.
-   //
-   // This is done by only checking the wxClipboard contents during an idle
-   // event, thus preventing possible recursion during other event processing.
-   //
-   mInIdle = true;
-
    UpdateMenus();
-
-   mInIdle = false;
 }
 
 void AudacityProject::OnActivate(wxActivateEvent & event)
diff -Nur audacity-src-1.3.9-orig/src/Project.h audacity-src-1.3.9/src/Project.h
--- audacity-src-1.3.9-orig/src/Project.h	2009-08-31 12:45:38.000000000 +0200
+++ audacity-src-1.3.9/src/Project.h	2009-09-12 15:18:26.812745135 +0200
@@ -431,10 +431,6 @@
 
    wxUint32 mLastFlags;
 
-   // see AudacityProject::OnUpdateUI() for explanation of next two
-   bool mInIdle;
-   wxUint32 mTextClipFlag;
-
    // Window elements
 
    wxTimer *mTimer;

audacity-1.3.9-libdir.patch:
 LoadLadspa.cpp |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE audacity-1.3.9-libdir.patch ---
diff -Nur audacity-src-1.3.9-orig/src/effects/ladspa/LoadLadspa.cpp audacity-src-1.3.9/src/effects/ladspa/LoadLadspa.cpp
--- audacity-src-1.3.9-orig/src/effects/ladspa/LoadLadspa.cpp	2009-08-31 12:45:40.000000000 +0200
+++ audacity-src-1.3.9/src/effects/ladspa/LoadLadspa.cpp	2009-09-03 12:01:49.823505468 +0200
@@ -286,7 +286,7 @@
 
    #ifdef __WXGTK__
    wxGetApp().AddUniquePathToPathList(wxT(INSTALL_PREFIX) wxT("/ladspa"), pathList);
-   wxGetApp().AddUniquePathToPathList(wxT("/usr/local/lib/ladspa"), pathList);
+   wxGetApp().AddUniquePathToPathList(wxT("/usr/local/__RPM_LIB__/ladspa"), pathList);
    wxGetApp().AddUniquePathToPathList(wxT(LIBDIR) wxT("/ladspa"), pathList);
    #endif
 


Index: audacity.spec
===================================================================
RCS file: /cvs/pkgs/rpms/audacity/F-10/audacity.spec,v
retrieving revision 1.66
retrieving revision 1.67
diff -u -p -r1.66 -r1.67
--- audacity.spec	13 May 2009 08:37:01 -0000	1.66
+++ audacity.spec	13 Oct 2009 11:24:12 -0000	1.67
@@ -1,27 +1,26 @@
 # Compile options:
 # --with mp3          : enable mp3 support
 
-%define tartopdir audacity-src-1.3.7
+%define tartopdir audacity-src-1.3.9
 
 Name: audacity
-Version: 1.3.7
-Release: 0.7.beta%{?dist}
+Version: 1.3.9
+Release: 0.3.beta%{?dist}
 Summary: Multitrack audio editor
 Group: Applications/Multimedia
 License: GPLv2
 URL: http://audacity.sourceforge.net
 
-Source0: http://downloads.sf.net/sourceforge/audacity/audacity-minsrc-1.3.7.tar.bz2
+Source0: http://downloads.sf.net/sourceforge/audacity/audacity-minsrc-%{version}.tar.bz2
 Source1: audacity.png
 Source2: audacity.desktop
 
 Patch1: audacity-1.3.7-libmp3lame-default.patch
-Patch2: audacity-1.3.7-libdir.patch
-Patch3: audacity-1.3.6-flac-import.patch
-Patch4: audacity-1.3.7-portaudio-non-mmap-alsa.patch
-Patch5: audacity-1.3.7-repeat.patch
+Patch2: audacity-1.3.9-libdir.patch
+Patch3: audacity-1.3.8-gsocket-conflict.patch
+Patch4: audacity-1.3.9-labeltrack-crash.patch
+Patch5: audacity-1.3.9-labelpopup.patch
 Patch6: audacity-1.3.7-vamp-1.3.patch
-Patch7: audacity-1.3.7-audiodevdefaults.patch
 
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: alsa-lib-devel
@@ -32,6 +31,7 @@ BuildRequires: gettext
 BuildRequires: jack-audio-connection-kit-devel
 BuildRequires: ladspa-devel
 BuildRequires: libid3tag-devel
+BuildRequires: taglib-devel
 BuildRequires: libogg-devel
 BuildRequires: libsamplerate-devel
 BuildRequires: libsndfile-devel
@@ -69,13 +69,12 @@ do
 done
 grep -q -s __RPM_LIB * -R && exit 1
 
-%patch3 -p1 -b .dumb-flac-import
-%patch4 -p1 -b .pa-non-mmap-alsa
-%patch5 -p1 -b .repeat
+%patch3 -p1 -b .gsocket-conflict
+%patch4 -p1 -b .labeltrack-crash
+%patch5 -p1 -b .labelpopup
 %if 0%{?fedora} < 11
 %patch6 -p1 -b .vamp-1.3
 %endif
-%patch7 -p1 -b .audiodevdefaults
 
 # Substitute occurences of "libmp3lame.so" with "libmp3lame.so.0".
 for i in locale/*.po src/export/ExportMP3.cpp
@@ -110,6 +109,10 @@ cp %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}
 
 make DESTDIR=${RPM_BUILD_ROOT} install
 
+# Audacity 1.3.8-beta complains if the help/manual directories
+# don't exist.
+mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}/help/manual
+
 %{find_lang} %{name}
 
 rm -f $RPM_BUILD_ROOT%{_datadir}/applications/*.desktop
@@ -147,6 +150,34 @@ update-desktop-database &> /dev/null || 
 
 
 %changelog
+* Mon Sep 14 2009 Michael Schwendt <mschwendt at fedoraproject.org> - 1.3.9-0.3.beta
+- add patch to fix LabelTrack popup
+
+* Sat Sep 12 2009 Michael Schwendt <mschwendt at fedoraproject.org> - 1.3.9-0.2.beta
+- add wxGTK work-around patches to fix LabelTrack crash
+  (shall fix #520917 and similar race-conditions)
+
+* Thu Sep  3 2009 Michael Schwendt <mschwendt at fedoraproject.org> - 1.3.9-0.1.beta
+- upgrade to 1.3.9-beta
+- upstream's changes in the device prefs code make the audiodevdefaults
+  patch unnecessary afaic see
+
+* Fri Jul 24 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.3.8-0.3.beta
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Mon Jul 20 2009 Michael Schwendt <mschwendt at fedoraproject.org> - 1.3.8-0.2.beta
+- glib2 2.21.1's gio in Rawhide F-12 introduces a GSocket that
+  conflicts with wxGTK's GSocket class (gsocket.h): as a work-around,
+  include less glib headers
+
+* Mon Jul 20 2009 Michael Schwendt <mschwendt at fedoraproject.org> - 1.3.8-0.1.beta
+- upgrade to 1.3.8-beta
+- BR taglib-devel
+- patches merged/obsoleted upstream:
+  audacity-1.3.7-portaudio-non-mmap-alsa.patch
+  audacity-1.3.7-repeat.patch
+  audacity-1.3.6-flac-import.patch
+
 * Wed May 13 2009 Michael Schwendt <mschwendt at fedoraproject.org> - 1.3.7-0.7.beta
 - retag up-to-date files and copy to F-10/F-11
 


--- audacity-1.3.6-flac-import.patch DELETED ---


--- audacity-1.3.7-audiodevdefaults.patch DELETED ---


--- audacity-1.3.7-libdir.patch DELETED ---




More information about the fedora-extras-commits mailing list