traverso-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Traverso-commit] traverso/src core/Project.cpp core/ProjectManag...


From: Remon Sijrier
Subject: [Traverso-commit] traverso/src core/Project.cpp core/ProjectManag...
Date: Mon, 03 Dec 2007 14:05:25 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Remon Sijrier <r_sijrier>       07/12/03 14:05:25

Modified files:
        src/core       : Project.cpp ProjectManager.cpp 
        src/traverso   : Interface.cpp 
        src/traverso/songcanvas: SongWidget.cpp 

Log message:
        * Show empty SongWidget when no work sheets are loaded (i.e. the 
Project has 0 sheets)
        * Some 'InfoWidgets' crashed when no sheet was loaded, and a config 
param changes, fixed
        * if a Project has 0 sheets, just close, don't start to wait till the 
Sheets are unregistered from the audiodevice, since we'll wait for ever then!

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Project.cpp?cvsroot=traverso&r1=1.64&r2=1.65
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ProjectManager.cpp?cvsroot=traverso&r1=1.51&r2=1.52
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/Interface.cpp?cvsroot=traverso&r1=1.113&r2=1.114
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/SongWidget.cpp?cvsroot=traverso&r1=1.22&r2=1.23

Patches:
Index: core/Project.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/Project.cpp,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -b -r1.64 -r1.65
--- core/Project.cpp    29 Nov 2007 11:04:07 -0000      1.64
+++ core/Project.cpp    3 Dec 2007 14:05:25 -0000       1.65
@@ -108,7 +108,8 @@
        
        for (int i=0; i< songcount; i++) {
                Song* song = new Song(this, numtracks);
-               private_add_song(song);
+               m_songs.append(song);
+               song->connect_to_audiodevice();
        }
 
        if (m_songs.size()) {
@@ -444,7 +445,7 @@
 {
        PENTER;
        
-       if ( m_currentSongId == id) {
+       if (m_currentSongId == id) {
                return;
        }
        
@@ -829,14 +830,22 @@
 
 void Project::private_add_song(Song * song)
 {
+       PENTER;
        m_songs.append(song);
        song->connect_to_audiodevice();
+       
+       set_current_song(song->get_id());
 }
 
 void Project::private_remove_song(Song * song)
 {
+       PENTER;
        m_songs.removeAll(song);
                
+       if (m_songs.isEmpty()) {
+               m_currentSongId = -1;
+       }
+               
        qint64 newcurrent = 0;
                
        if (m_songs.size() > 0) {

Index: core/ProjectManager.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/ProjectManager.cpp,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -b -r1.51 -r1.52
--- core/ProjectManager.cpp     22 Nov 2007 17:00:55 -0000      1.51
+++ core/ProjectManager.cpp     3 Dec 2007 14:05:25 -0000       1.52
@@ -384,7 +384,13 @@
        PENTER;
        
        if (currentProject) {
-               if (currentProject->is_save_to_close()) {
+               if (currentProject->get_songs().size() == 0) {
+                       // No sheets to unregister from the audiodevice,
+                       // just save and quit:
+                       set_current_project(0);
+                       QApplication::exit();
+                       return 0;
+               } else if (currentProject->is_save_to_close()) {
                        m_exitInProgress = true;
                        set_current_project(0);
                } else {

Index: traverso/Interface.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/Interface.cpp,v
retrieving revision 1.113
retrieving revision 1.114
diff -u -b -r1.113 -r1.114
--- traverso/Interface.cpp      30 Nov 2007 19:39:04 -0000      1.113
+++ traverso/Interface.cpp      3 Dec 2007 14:05:25 -0000       1.114
@@ -255,6 +255,9 @@
                // function returns, if the songcanvas is still painting (due 
playback e.g.) we
                // could get a crash due canvas items refering to data that was 
managed by the project.
                // so let's delete the SongWidgets before the project is 
deleted!
+               if (m_songWidgets.contains(0)) {
+                       delete m_songWidgets.take(0);
+               }
                foreach(SongWidget* sw, m_songWidgets) {
                        delete_songwidget(sw->get_song());
                }
@@ -275,11 +278,23 @@
 void Interface::show_song(Song* song)
 {
        PENTER;
+       
+       SongWidget* songWidget;
+       
        if (!song) {
-               return;
-       }
+               Project* project = pm().get_project();
+               if (project && project->get_songs().size() == 0) {
+                       songWidget = m_songWidgets.value(0);
        
-       SongWidget* songWidget = m_songWidgets.value(song);
+                       if (!songWidget) {
+                               songWidget = new SongWidget(0, 
centerAreaWidget);
+                               centerAreaWidget->addWidget(songWidget);
+                               m_songWidgets.insert(0, songWidget);
+                       }
+               }
+       } else {
+               songWidget = m_songWidgets.value(song);
+       }
        
        if (!songWidget) {
                songWidget = new SongWidget(song, centerAreaWidget);
@@ -289,7 +304,10 @@
        currentSongWidget = songWidget;
        
centerAreaWidget->setCurrentIndex(centerAreaWidget->indexOf(songWidget));
        songWidget->setFocus();
+       
+       if (song) {
        pm().get_undogroup()->setActiveStack(song->get_history_stack());
+       }
 }
 
 

Index: traverso/songcanvas/SongWidget.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/SongWidget.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- traverso/songcanvas/SongWidget.cpp  5 Nov 2007 15:49:32 -0000       1.22
+++ traverso/songcanvas/SongWidget.cpp  3 Dec 2007 14:05:25 -0000       1.23
@@ -181,6 +181,9 @@
        : QFrame(parent)
        , m_song(song)
 {
+       if (!m_song) {
+               return;
+       }
        m_scene = new QGraphicsScene();
        m_vScrollBar = new QScrollBar(this);
        m_hScrollBar = new QScrollBar(this);
@@ -242,6 +245,9 @@
 
 SongWidget::~ SongWidget()
 {
+       if (!m_song) {
+               return;
+       }
        delete m_trackPanel;
        delete m_clipsViewPort;
        delete m_timeLine;
@@ -262,6 +268,10 @@
 
 void SongWidget::set_use_opengl( bool useOpenGL )
 {
+       if (!m_song) {
+               return;
+       }
+       
        if (useOpenGL != m_usingOpenGL) {
 #if defined (QT_OPENGL_SUPPORT)
                m_clipsViewPort->setViewport(useOpenGL ? new 
QGLWidget(QGLFormat(QGL::SampleBuffers)) : new QWidget);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]