[Top][All Lists]
[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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Traverso-commit] traverso/src core/Project.cpp core/ProjectManag...,
Remon Sijrier <=