fixed a bug that series meta data is not loaded completely, fixed crash during shutdown of plugin

This commit is contained in:
louis 2014-05-14 07:10:39 +02:00
parent 482f1d284a
commit 9691a7042c
3 changed files with 22 additions and 4 deletions

View File

@ -108,6 +108,7 @@ void cTVDBSeries::InsertMedia(int mediaType, int imgWidth, int imgHeight, string
case msBanner2: case msBanner2:
case msBanner3: case msBanner3:
banners.push_back(media); banners.push_back(media);
break;
case msSeasonPoster: case msSeasonPoster:
seasonPosters.insert(pair<int, cTVDBMedia*>(season, media)); seasonPosters.insert(pair<int, cTVDBMedia*>(season, media));
break; break;

View File

@ -30,6 +30,7 @@ cUpdate::cUpdate(cScrapManager *manager) : cThread("update thread started", true
selectReadScrapedEventsInit = 0; selectReadScrapedEventsInit = 0;
selectReadScrapedEvents = 0; selectReadScrapedEvents = 0;
selectImg = 0; selectImg = 0;
selectEpisodeImg = 0;
selectSeasonPoster = 0; selectSeasonPoster = 0;
selectActors = 0; selectActors = 0;
selectActorThumbs = 0; selectActorThumbs = 0;
@ -184,9 +185,24 @@ int cUpdate::initDb() {
selectImg->build(")"); selectImg->build(")");
selectImg->build(" from %s where ", tSeriesMedia->TableName()); selectImg->build(" from %s where ", tSeriesMedia->TableName());
selectImg->bind(cTableSeriesMedia::fiSeriesId, cDBS::bndIn | cDBS::bndSet); selectImg->bind(cTableSeriesMedia::fiSeriesId, cDBS::bndIn | cDBS::bndSet);
selectImg->bind(cTableSeriesMedia::fiEpisodeId, cDBS::bndIn | cDBS::bndSet, " and ");
status += selectImg->prepare(); status += selectImg->prepare();
// select episode image
imageSize.setField(&imageSizeDef);
selectEpisodeImg = new cDbStatement(tSeriesMedia);
selectEpisodeImg->build("select ");
selectEpisodeImg->bind(cTableSeriesMedia::fiMediaWidth, cDBS::bndOut);
selectEpisodeImg->bind(cTableSeriesMedia::fiMediaHeight, cDBS::bndOut, ", ");
selectEpisodeImg->bind(cTableSeriesMedia::fiMediaContent, cDBS::bndOut, ", ");
selectEpisodeImg->build(", length(");
selectEpisodeImg->bind(&imageSize, cDBS::bndOut);
selectEpisodeImg->build(")");
selectEpisodeImg->build(" from %s where ", tSeriesMedia->TableName());
selectEpisodeImg->bind(cTableSeriesMedia::fiSeriesId, cDBS::bndIn | cDBS::bndSet);
selectEpisodeImg->bind(cTableSeriesMedia::fiEpisodeId, cDBS::bndIn | cDBS::bndSet, " and ");
status += selectEpisodeImg->prepare();
// select poster image // select poster image
posterSize.setField(&imageSizeDef); posterSize.setField(&imageSizeDef);
@ -360,6 +376,7 @@ int cUpdate::exitDb() {
delete selectReadScrapedEvents; selectReadScrapedEvents = 0; delete selectReadScrapedEvents; selectReadScrapedEvents = 0;
delete selectReadScrapedEventsInit; selectReadScrapedEventsInit = 0; delete selectReadScrapedEventsInit; selectReadScrapedEventsInit = 0;
delete selectImg; selectImg = 0; delete selectImg; selectImg = 0;
delete selectEpisodeImg; selectEpisodeImg = 0;
delete selectSeasonPoster; selectSeasonPoster = 0; delete selectSeasonPoster; selectSeasonPoster = 0;
delete selectActors; selectActors = 0; delete selectActors; selectActors = 0;
delete selectActorThumbs; selectActorThumbs = 0; delete selectActorThumbs; selectActorThumbs = 0;
@ -537,7 +554,7 @@ void cUpdate::LoadEpisodeImage(cTVDBSeries *series, int episodeId, string path)
tSeriesMedia->setValue(cTableSeriesMedia::fiSeriesId, series->id); tSeriesMedia->setValue(cTableSeriesMedia::fiSeriesId, series->id);
tSeriesMedia->setValue(cTableSeriesMedia::fiEpisodeId, episodeId); tSeriesMedia->setValue(cTableSeriesMedia::fiEpisodeId, episodeId);
int res = selectImg->find(); int res = selectEpisodeImg->find();
if (res) { if (res) {
if (!imgExists) { if (!imgExists) {
@ -552,7 +569,7 @@ void cUpdate::LoadEpisodeImage(cTVDBSeries *series, int episodeId, string path)
series->InsertEpisodeImage(episodeId, imgWidth, imgHeight, imgPath); series->InsertEpisodeImage(episodeId, imgWidth, imgHeight, imgPath);
} }
selectImg->freeResult(); selectEpisodeImg->freeResult();
} }
void cUpdate::LoadSeasonPoster(cTVDBSeries *series, int season, string path) { void cUpdate::LoadSeasonPoster(cTVDBSeries *series, int season, string path) {
@ -708,7 +725,6 @@ string cUpdate::LoadMediaSeries(int seriesId, int mediaType, string path, int wi
tSeriesMedia->clear(); tSeriesMedia->clear();
tSeriesMedia->setValue(cTableSeriesMedia::fiSeriesId, seriesId); tSeriesMedia->setValue(cTableSeriesMedia::fiSeriesId, seriesId);
tSeriesMedia->setValue(cTableSeriesMedia::fiMediaType, mediaType); tSeriesMedia->setValue(cTableSeriesMedia::fiMediaType, mediaType);
int res = selectImg->find(); int res = selectImg->find();
if (res) { if (res) {
int size = imageSize.getIntValue(); int size = imageSize.getIntValue();

View File

@ -76,6 +76,7 @@ class cUpdate : public cThread {
cDbStatement* selectReadScrapedEventsInit; cDbStatement* selectReadScrapedEventsInit;
cDbStatement* selectReadScrapedEvents; cDbStatement* selectReadScrapedEvents;
cDbStatement* selectImg; cDbStatement* selectImg;
cDbStatement* selectEpisodeImg;
cDbStatement* selectSeasonPoster; cDbStatement* selectSeasonPoster;
cDbStatement* selectActors; cDbStatement* selectActors;
cDbStatement* selectActorThumbs; cDbStatement* selectActorThumbs;