Corregido memory leak

intento de corregir los glitches de las marcas de "le?do"

Corregido el cargador de los flows SW
This commit is contained in:
Luis Ángel San Martín 2013-01-20 00:50:37 +01:00
parent eae74073c0
commit 726061affe
5 changed files with 25 additions and 15 deletions

View File

@ -66,7 +66,7 @@ void Comic::setIndex(unsigned int index)
emit pageChanged(_index); emit pageChanged(_index);
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
QPixmap * Comic::currentPage() /*QPixmap * Comic::currentPage()
{ {
QPixmap * p = new QPixmap(); QPixmap * p = new QPixmap();
p->loadFromData(_pages[_index]); p->loadFromData(_pages[_index]);
@ -78,7 +78,7 @@ QPixmap * Comic::operator[](unsigned int index)
QPixmap * p = new QPixmap(); QPixmap * p = new QPixmap();
p->loadFromData(_pages[index]); p->loadFromData(_pages[index]);
return p; return p;
} }*/
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool Comic::loaded() bool Comic::loaded()
{ {
@ -92,7 +92,9 @@ void Comic::loadFinished()
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void Comic::setBookmark() void Comic::setBookmark()
{ {
bm->setBookmark(_index,*operator[](_index)); QPixmap p;
p.loadFromData(_pages[_index]);
bm->setBookmark(_index,p);
emit bookmarksLoaded(*bm); emit bookmarksLoaded(*bm);
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -104,7 +106,9 @@ void Comic::removeBookmark()
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void Comic::saveBookmarks() void Comic::saveBookmarks()
{ {
bm->setLastPage(_index,*operator[](_index)); QPixmap p;
p.loadFromData(_pages[_index]);
bm->setLastPage(_index,p);
bm->save(); bm->save();
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -117,12 +121,16 @@ void Comic::updateBookmarkImage(int index)
{ {
if(bm->isBookmark(index)) if(bm->isBookmark(index))
{ {
bm->setBookmark(index,*operator[](index)); QPixmap p;
p.loadFromData(_pages[_index]);
bm->setBookmark(index,p);
emit bookmarksLoaded(*bm); emit bookmarksLoaded(*bm);
} }
if(bm->getLastPage() == index) if(bm->getLastPage() == index)
{ {
bm->setLastPage(index,*operator[](index)); QPixmap p;
p.loadFromData(_pages[_index]);
bm->setLastPage(index,p);
emit bookmarksLoaded(*bm); emit bookmarksLoaded(*bm);
} }

View File

@ -48,9 +48,9 @@
void setIndex(unsigned int index); void setIndex(unsigned int index);
unsigned int getIndex(){return _index;}; unsigned int getIndex(){return _index;};
unsigned int numPages(){return _pages.size();} unsigned int numPages(){return _pages.size();}
QPixmap * currentPage(); //QPixmap * currentPage();
bool loaded(); bool loaded();
QPixmap * operator[](unsigned int index); //QPixmap * operator[](unsigned int index);
QVector<QByteArray> * getRawData(){return &_pages;}; QVector<QByteArray> * getRawData(){return &_pages;};
QByteArray getRawPage(int page); QByteArray getRawPage(int page);
bool pageIsLoaded(int page); bool pageIsLoaded(int page);

View File

@ -190,6 +190,7 @@ void GoToFlow::updateImageData()
imagesSetted[idx] = true; imagesSetted[idx] = true;
numImagesLoaded++; numImagesLoaded++;
rawImages[idx].clear();; //release memory rawImages[idx].clear();; //release memory
imagesLoaded[idx]=true;
} }
} }
@ -212,7 +213,7 @@ void GoToFlow::updateImageData()
if(!imagesLoaded[i]&&imagesReady[i])//slide(i).isNull()) if(!imagesLoaded[i]&&imagesReady[i])//slide(i).isNull())
{ {
// schedule thumbnail generation // schedule thumbnail generation
imagesLoaded[i]=true;
worker->generate(i, flow->slideSize(),rawImages[i]); worker->generate(i, flow->slideSize(),rawImages[i]);
return; return;
} }

View File

@ -74,6 +74,7 @@ void ComicFlow::updateImageData()
setSlide(idx, worker->result()); setSlide(idx, worker->result());
imagesSetted[idx] = true; imagesSetted[idx] = true;
numImagesLoaded++; numImagesLoaded++;
imagesLoaded[idx]=true;
} }
} }
@ -96,7 +97,7 @@ void ComicFlow::updateImageData()
{ {
// schedule thumbnail generation // schedule thumbnail generation
QString fname = imageFiles[i]; QString fname = imageFiles[i];
imagesLoaded[i]=true;
worker->generate(i, fname, slideSize()); worker->generate(i, fname, slideSize());
return; return;

View File

@ -458,22 +458,22 @@ void YACReaderFlowGL::drawCover(CFImage *CF)
//esquina inferior izquierda //esquina inferior izquierda
glColor4f(LDOWN*opacity,LDOWN*opacity,LDOWN*opacity,1); glColor4f(LDOWN*opacity,LDOWN*opacity,LDOWN*opacity,1);
glTexCoord2f(0.0f, 1.0f); glTexCoord2f(0.0f, 1.0f);
glVertex3f(w/2.f-0.2f, -0.5f, 0.0001f); glVertex3f(w/2.f-0.2f, -0.5f, 0.001f);
//esquina inferior derecha //esquina inferior derecha
glColor4f(RDOWN*opacity,RDOWN*opacity,RDOWN*opacity,1); glColor4f(RDOWN*opacity,RDOWN*opacity,RDOWN*opacity,1);
glTexCoord2f(1.0f, 1.0f); glTexCoord2f(1.0f, 1.0f);
glVertex3f(w/2.f, -0.5f, 0.0001f); glVertex3f(w/2.f, -0.5f, 0.001f);
//esquina superior derecha //esquina superior derecha
glColor4f(RUP*opacity,RUP*opacity,RUP*opacity,1); glColor4f(RUP*opacity,RUP*opacity,RUP*opacity,1);
glTexCoord2f(1.0f, 0.0f); glTexCoord2f(1.0f, 0.0f);
glVertex3f(w/2.f, -0.3f, 0.0001f); glVertex3f(w/2.f, -0.3f, 0.001f);
//esquina superior izquierda //esquina superior izquierda
glColor4f(LUP*opacity,LUP*opacity,LUP*opacity,1); glColor4f(LUP*opacity,LUP*opacity,LUP*opacity,1);
glTexCoord2f(0.0f, 0.0f); glTexCoord2f(0.0f, 0.0f);
glVertex3f(w/2.f-0.2f, -0.3f, 0.0001f); glVertex3f(w/2.f-0.2f, -0.3f, 0.001f);
glEnd(); glEnd();
glDisable(GL_TEXTURE_2D); glDisable(GL_TEXTURE_2D);