traverso-commit
[Top][All Lists]
Advanced

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

[Traverso-commit] traverso/src core/Peak.cpp traverso/songcanvas/...


From: Remon Sijrier
Subject: [Traverso-commit] traverso/src core/Peak.cpp traverso/songcanvas/...
Date: Mon, 23 Apr 2007 15:02:37 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Remon Sijrier <r_sijrier>       07/04/23 15:02:37

Modified files:
        src/core       : Peak.cpp 
        src/traverso/songcanvas: AudioClipView.cpp 

Log message:
        * improved boundary checking, don't paint beyond edges.
        * Peak: microview calculation assigned wrong value to readframes, 
availframes, 
        resulting in a crash

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Peak.cpp?cvsroot=traverso&r1=1.18&r2=1.19
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/AudioClipView.cpp?cvsroot=traverso&r1=1.48&r2=1.49

Patches:
Index: core/Peak.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/Peak.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- core/Peak.cpp       20 Apr 2007 09:45:07 -0000      1.18
+++ core/Peak.cpp       23 Apr 2007 15:02:36 -0000      1.19
@@ -307,11 +307,11 @@
                audio_sample_t buf[toRead];
 
                if ( (readFrames = m_source->file_read(m_channel, buf, 
startPos, toRead)) != toRead) {
-                       PWARN("Unable to read nframes %d (only %d available)", 
pixelcount, readFrames);
+                       PWARN("Unable to read nframes %d (only %d available)", 
toRead, readFrames);
                        if (readFrames == 0) {
-                               return -1;
+                               return NO_PEAKDATA_FOUND;
                        }
-                       pixelcount = readFrames;
+                       pixelcount = readFrames / zoomStep[zoomLevel];
                }
 
                int count = 0;

Index: traverso/songcanvas/AudioClipView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/AudioClipView.cpp,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -b -r1.48 -r1.49
--- traverso/songcanvas/AudioClipView.cpp       23 Apr 2007 11:56:52 -0000      
1.48
+++ traverso/songcanvas/AudioClipView.cpp       23 Apr 2007 15:02:36 -0000      
1.49
@@ -228,6 +228,9 @@
        if (pixelcount % 2) {
                pixelcount += 1;
        }
+       if ( (xstart + pixelcount) > m_boundingRect.width()) {
+               pixelcount = m_boundingRect.width() - xstart;
+       }
        
        int channels = m_clip->get_channels();
        bool microView = m_song->get_hzoom() > (Peak::MAX_ZOOM_USING_SOURCEFILE 
- 1) ? 0 : 1;
@@ -242,6 +245,8 @@
        // Load peak data for all channels, if no peakdata is returned
        // for a certain Peak object, schedule it for loading.
        for (int chan=0; chan < channels; chan++) {
+               memset(buffers[chan], 0, buffersize * sizeof(unsigned char));
+               
                Peak* peak = m_clip->get_peak_for_channel(chan);
                int availpeaks = peak->calculate_peaks( buffers[chan],
                                                        microView ? 
m_song->get_hzoom() : m_song->get_hzoom() + 1,
@@ -616,6 +621,7 @@
 void AudioClipView::position_changed()
 {
        calculate_bounding_rect();
+       update();
 }
 
 void AudioClipView::load_theme_data()




reply via email to

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