Index: programinfo.cpp =================================================================== RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/programinfo.cpp,v retrieving revision 1.201 diff -u -r1.201 programinfo.cpp --- programinfo.cpp 23 Mar 2005 07:18:51 -0000 1.201 +++ programinfo.cpp 29 Mar 2005 02:47:22 -0000 @@ -1098,13 +1098,32 @@ { MSqlQuery query(MSqlQuery::InitCon()); - query.prepare("UPDATE recorded" - " SET bookmark = :BOOKMARK" - " WHERE chanid = :CHANID" - " AND starttime = :STARTTIME ;"); - query.bindValue(":CHANID", chanid); - query.bindValue(":STARTTIME", recstartts.toString("yyyyMMddhhmm00")); - + // When using mythtv to play files not recorded by myth the title is empty + // so bookmark is saved to videobookmarks rather than recorded + if (title.isEmpty()) + { + //delete any existing bookmark for this file + query.prepare("DELETE from videobookmarks" + " WHERE filename = :FILENAME ;"); + query.bindValue(":FILENAME", pathname); + if (!query.exec() || !query.isActive()) + MythContext::DBError("Save position update", + query); + //insert new bookmark + query.prepare("INSERT into videobookmarks (filename, bookmark)" + "VALUES (:FILENAME , :BOOKMARK);"); + query.bindValue(":FILENAME", pathname); + } + else + { + query.prepare("UPDATE recorded" + " SET bookmark = :BOOKMARK" + " WHERE chanid = :CHANID" + " AND starttime = :STARTTIME ;"); + query.bindValue(":CHANID", chanid); + query.bindValue(":STARTTIME", recstartts.toString("yyyyMMddhhmm00")); + } + if (pos > 0) { char posstr[128]; @@ -1126,13 +1145,23 @@ if (ignoreBookmark) return pos; - - query.prepare("SELECT bookmark FROM recorded" - " WHERE chanid = :CHANID" - " AND starttime = :STARTTIME ;"); - query.bindValue(":CHANID", chanid); - query.bindValue(":STARTTIME", recstartts.toString("yyyyMMddhhmm00")); - + + // When using mythtv to play files not recorded by myth the title is empty + // so bookmark comes from videobookmarks rather than recorded + if (title.isEmpty()) + { + query.prepare("SELECT bookmark FROM videobookmarks" + " WHERE filename = :FILENAME;"); + query.bindValue(":FILENAME", pathname); + } + else + { + query.prepare("SELECT bookmark FROM recorded" + " WHERE chanid = :CHANID" + " AND starttime = :STARTTIME ;"); + query.bindValue(":CHANID", chanid); + query.bindValue(":STARTTIME", recstartts.toString("yyyyMMddhhmm00")); + } if (query.exec() && query.isActive() && query.size() > 0) { query.next(); Index: dbcheck.cpp =================================================================== RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/dbcheck.cpp,v retrieving revision 1.93 diff -u -r1.93 dbcheck.cpp --- dbcheck.cpp 23 Mar 2005 06:39:07 -0000 1.93 +++ dbcheck.cpp 29 Mar 2005 02:47:29 -0000 @@ -1560,6 +1560,18 @@ return false; } + if (dbver == "1076") + { + const QString updates[] = { +"CREATE TABLE IF NOT EXISTS videobookmarks (" +" filename varchar(255) NOT NULL," +" bookmark varchar(128) default NULL," +" PRIMARY KEY (filename)" +");" +}; + if (!performActualUpdate(updates, "1077", dbver)) + return false; + } return true; } @@ -2003,6 +2015,11 @@ " PRIMARY KEY (sourceid)," " UNIQUE KEY name (name)" ");", +"CREATE TABLE IF NOT EXISTS videobookmarks (" +" filename varchar(255) NOT NULL," +" bookmark varchar(128) default NULL," +" PRIMARY KEY (filename)" +");", "INSERT INTO profilegroups SET name = 'Software Encoders (v4l based)', cardtype = 'V4L', is_default = 1;", "INSERT INTO profilegroups SET name = 'MPEG-2 Encoders (PVR-250, PVR-350)', cardtype = 'MPEG', is_default = 1;", "INSERT INTO profilegroups SET name = 'Hardware MJPEG Encoders (Matrox G200-TV, Miro DC10, etc)', cardtype = 'MJPEG', is_default = 1;",