On Wednesday, November 07, 2012 07:28:59 AM Radek Polak wrote:
> For now i have two source and build trees - with 4.7 qt and with 4.8 and
> putting some qDebug() to figure out where the problem exactly is.
Attached is patch with some debug writes. You can see that 4.7 and 4.8
generate different QContent - note the values for Role and Filename:
------------------------>% for Qt 4.7:
QMimeType::fromFileName "/opt/qtmoko/apps/Settings/gtalksettings.desktop"
QMimeType::fromFileName 1
======================== QMimeType::loadExtensions filename= "/etc/mime.types"
QMimeType::fromFileName extension= "desktop"
QMimeType::fromFileName type.mimeId= ""
QMimeType::fromFileName 2
QMimeType::fromFileName 4
QSqlContentStore::installContent mimeType= ( MimeType: application/octet-
stream )
===== content QContent( QContentEngine( Id: "ffffffff|ffffffffffffffff" Name:
"gtalksettings" FileName: "" MimeType: "application/octet-stream" DrmState: 0
Role: 2 IconName: "" LastUpdated: QDateTime("") ) )
QSqlContentStore::contentFromFileName 9
QSqlContentStore::contentFromFileName 0
QSqlContentStore::contentFromFileName 1
------------------------>% for Qt 4.8:
QMimeType::fromFileName "/opt/qtmoko/apps/Settings/gtalksettings.desktop"
QMimeType::fromFileName 1
======================== QMimeType::loadExtensions filename= "/etc/mime.types"
QMimeType::fromFileName extension= "desktop"
QMimeType::fromFileName type.mimeId= ""
QMimeType::fromFileName 2
QMimeType::fromFileName 4
QSqlContentStore::installContent mimeType= ( MimeType: application/octet-
stream )
===== content QContent( QContentEngine( Id: "ffffffff|ffffffffffffffff" Name:
"gtalksettings.desktop" FileName:
"/opt/qtmoko/apps/Settings/gtalksettings.desktop" MimeType:
"application/octet-stream" DrmState: 0 Role: 1 IconName: "" LastUpdated:
QDateTime("Thu Jan 1 00:00:00 1970") ) )
QSqlContentStore::contentFromFileName 9
QSqlContentStore::contentFromFileName 0
QSqlContentStore::contentFromFileName 1
Regards
Radek
diff --git a/qtopiacore/qt b/qtopiacore/qt
index 1fe5204..4a7a2a1 160000
--- a/qtopiacore/qt
+++ b/qtopiacore/qt
@@ -1 +1 @@
-Subproject commit 1fe520458c815019ef14d5f0c99e2a0d49f28eef
+Subproject commit 4a7a2a18e9871841ccf4606111b724c6e63dd2fd-dirty
diff --git a/src/3rdparty/applications/yberbrowser b/src/3rdparty/applications/yberbrowser
--- a/src/3rdparty/applications/yberbrowser
+++ b/src/3rdparty/applications/yberbrowser
@@ -1 +1 @@
-Subproject commit 60f53c930f71ec11e6e436e6a4e3da41a3e0ec2e
+Subproject commit 60f53c930f71ec11e6e436e6a4e3da41a3e0ec2e-dirty
diff --git a/src/libraries/qtopia/qcontent.cpp b/src/libraries/qtopia/qcontent.cpp
index 690562a..49cd0ef 100644
--- a/src/libraries/qtopia/qcontent.cpp
+++ b/src/libraries/qtopia/qcontent.cpp
@@ -459,8 +459,10 @@ void QContent::uninstall( QContentId id )
void QContent::installBatch( const QList<QFileInfo> &batch )
{
QList< QContent > content;
- foreach(const QFileInfo &fi, batch)
+ foreach(const QFileInfo &fi, batch) {
+ qDebug() << "QContent::installBatch fi.absoluteFilePath=" << fi.absoluteFilePath();
content.append( QContentStore::instance()->contentFromFileName( fi.absoluteFilePath(), QContentStore::Construct ) );
+ }
QContentStore::instance()->batchCommitContent( content );
}
diff --git a/src/libraries/qtopia/qfscontentengine.cpp b/src/libraries/qtopia/qfscontentengine.cpp
index 3b49574..25e188a 100644
--- a/src/libraries/qtopia/qfscontentengine.cpp
+++ b/src/libraries/qtopia/qfscontentengine.cpp
@@ -185,6 +185,8 @@ bool QFSContentEngine::execute( const QStringList &arguments ) const
*/
QIODevice *QFSContentEngine::open( QIODevice::OpenMode mode )
{
+ qDebug() << "QFSContentEngine::open fileName=" << fileName();
+
if( name().isEmpty() )
return 0;
@@ -192,6 +194,8 @@ QIODevice *QFSContentEngine::open( QIODevice::OpenMode mode )
{
if( mode & QIODevice::WriteOnly )
{
+ qDebug() << "QFSContentEngine::open 1";
+
if( mimeType().isNull() )
setMimeType( QMimeType::fromFileName( name() ) );
@@ -213,7 +217,8 @@ QIODevice *QFSContentEngine::open( QIODevice::OpenMode mode )
}
QFile *file = new QFile( fileName() );
-
+ qDebug() << "QFSContentEngine::open 2";
+
if( !file->open( mode ) )
{
setError( file->errorString() );
diff --git a/src/libraries/qtopia/qmimetype.cpp b/src/libraries/qtopia/qmimetype.cpp
index f6306cc..b3fc699 100644
--- a/src/libraries/qtopia/qmimetype.cpp
+++ b/src/libraries/qtopia/qmimetype.cpp
@@ -180,6 +180,8 @@ QMimeType QMimeType::fromExtension( const QString &extension )
*/
QMimeType QMimeType::fromFileName( const QString &fileName )
{
+ qDebug() << "QMimeType::fromFileName" << fileName;
+
QMimeType type;
int slashIndex = fileName.lastIndexOf( QLatin1Char( '/' ) );
@@ -188,23 +190,34 @@ QMimeType QMimeType::fromFileName( const QString &fileName )
if( dotIndex > slashIndex )
{
+ qDebug() << "QMimeType::fromFileName 1";
if(loadedTimes()->count() == 0)
loadExtensions();
QString extension = fileName.mid( dotIndex + 1 ).toLower();
+ qDebug() << "QMimeType::fromFileName extension=" << extension;
type.mimeId = typeFor()->value( extension );
+
+ qDebug() << "QMimeType::fromFileName type.mimeId=" << type.mimeId;
}
if( type.mimeId.isEmpty() )
{
+ qDebug() << "QMimeType::fromFileName 2";
const char elfMagic[] = { '\177', 'E', 'L', 'F', '\0' };
QFile ef( fileName );
if ( ef.size() > 5 && ef.open( QIODevice::ReadOnly ) && ef.peek(5) == elfMagic) // try to find from magic
+ {
+ qDebug() << "QMimeType::fromFileName 3";
type.mimeId = QLatin1String("application/x-executable"); // could be a shared library or an exe
+ }
else
+ {
+ qDebug() << "QMimeType::fromFileName 4";
type.mimeId = QLatin1String("application/octet-stream");
+ }
}
return type;
@@ -404,6 +417,8 @@ static QString nextString( const char *line, int& posn )
*/
void QMimeType::loadExtensions(const QString& filename)
{
+ qDebug() << "======================== QMimeType::loadExtensions filename=" << filename;
+
QMutexLocker staticsGuard(&staticsGuardMutex);
QFile file(filename);
if ( file.open(QIODevice::ReadOnly) ) {
diff --git a/src/libraries/qtopia/qsqlcontentstore.cpp b/src/libraries/qtopia/qsqlcontentstore.cpp
index e167430..6057ad0 100644
--- a/src/libraries/qtopia/qsqlcontentstore.cpp
+++ b/src/libraries/qtopia/qsqlcontentstore.cpp
@@ -122,6 +122,8 @@ QContent QSqlContentStore::contentFromFileName( const QString &fileName, LookupF
return QContent();
}
+ qDebug() << "QSqlContentStore::contentFromFileName 0";
+
if( lookup & Lookup )
{
static const QString selectString = QLatin1String(
@@ -131,14 +133,20 @@ QContent QSqlContentStore::contentFromFileName( const QString &fileName, LookupF
"left join mimeTypeLookup on content.mType = mimeTypeLookup.pKey "
"WHERE path = :path and locationLookup.location = :location" );
+ qDebug() << "QSqlContentStore::contentFromFileName 1";
+
if( fileName.endsWith( QLatin1String( ".desktop" ), Qt::CaseInsensitive ) )
{
+ qDebug() << "QSqlContentStore::contentFromFileName 2";
QContent content = desktopContent( fileName );
+ qDebug() << "QSqlContentStore::contentFromFileName 3";
if( !content.isNull() )
return content;
}
+ qDebug() << "QSqlContentStore::contentFromFileName 4";
+
int slash = fileName.lastIndexOf( '/' );
if( slash == -1 )
@@ -178,8 +186,10 @@ QContent QSqlContentStore::contentFromFileName( const QString &fileName, LookupF
QContent content;
+ qDebug() << "QSqlContentStore::contentFromFileName 5";
if( lookup & Construct )
{
+ qDebug() << "QSqlContentStore::contentFromFileName 6";
QContentEngine *engine = new QFSContentEngine;
engine->setFileName( fileName );
@@ -188,15 +198,22 @@ QContent QSqlContentStore::contentFromFileName( const QString &fileName, LookupF
if( !(lookup & Commit) )
{
+ qDebug() << "QSqlContentStore::contentFromFileName 7" << c;
if( (engine = installContent( &c ) ) != 0 )
+ {
content = QContent( engine );
+ qDebug() << "===== content " << content;
+ }
}
else if( commitContent( &c ) )
{
+ qDebug() << "QSqlContentStore::contentFromFileName 8";
content = c;
}
}
+ qDebug() << "QSqlContentStore::contentFromFileName 9";
+
if( content.id() != QContent::InvalidId )
QContentCache::instance()->cache( content );
@@ -218,6 +235,7 @@ QContent QSqlContentStore::contentFromEngineType( const QString &engineType )
*/
bool QSqlContentStore::commitContent( QContent *content )
{
+ qDebug() << "QSqlContentStore::commitContent" << *content;
qLog(DocAPI) << __PRETTY_FUNCTION__ << *content;
#ifndef QTOPIA_CONTENT_INSTALLER
@@ -230,20 +248,25 @@ bool QSqlContentStore::commitContent( QContent *content )
#endif
if( content->id() == QContent::InvalidId )
{
+ qDebug() << "QSqlContentStore::commitContent 1";
+
QContentEngine *engine = 0;
if( content->lastUpdated().isNull() )
{
+ qDebug() << "QSqlContentStore::commitContent 2";
if( (engine = installContent( content )) == 0 )
return false;
}
else if( !contentEngine( content )->isOutOfDate() || (engine = refreshContent( content )) == 0 )
{
+ qDebug() << "QSqlContentStore::commitContent 3";
engine = contentEngine( content );
}
if( engine && insertContent( engine, QtopiaSql::instance()->databaseIdForPath( engine->fileName() ) ) )
{
+ qDebug() << "QSqlContentStore::commitContent 4";
*content = QContent( engine );
QContentCache::instance()->cache( *content );
@@ -252,6 +275,7 @@ bool QSqlContentStore::commitContent( QContent *content )
}
else
{
+ qDebug() << "QSqlContentStore::commitContent 5";
if( engine && !engine->ref )
delete engine;
@@ -260,11 +284,13 @@ bool QSqlContentStore::commitContent( QContent *content )
}
else
{
+ qDebug() << "QSqlContentStore::commitContent 6";
QContentEngine *engine = 0;
if( ( content->name().isNull() || content->type().isNull() || contentEngine( content )->isOutOfDate() )
&& (engine = refreshContent( content )) != 0 )
{
+ qDebug() << "QSqlContentStore::commitContent 7";
*content = QContent( engine );
}
@@ -272,6 +298,7 @@ bool QSqlContentStore::commitContent( QContent *content )
if( dbId == content->id().first )
{
+ qDebug() << "QSqlContentStore::commitContent 8";
if( updateContent( contentEngine( content ) ) )
{
QContentCache::instance()->cache( *content );
@@ -283,12 +310,14 @@ bool QSqlContentStore::commitContent( QContent *content )
}
else if( dbId == quint32(-1) )
{
+ qDebug() << "QSqlContentStore::commitContent 9";
uninstallContent( content->id() );
return false;
}
else
{
+ qDebug() << "QSqlContentStore::commitContent 10";
QContentEngine *engine = contentEngine( content );
ensurePropertiesLoaded( engine );
@@ -298,6 +327,7 @@ bool QSqlContentStore::commitContent( QContent *content )
if( insertContent( engine, dbId ) )
{
+ qDebug() << "QSqlContentStore::commitContent 11";
QContentCache::instance()->cache( *content );
return true;
@@ -368,19 +398,26 @@ QIODevice *QSqlContentStore::openContent( QContent *content, QIODevice::OpenMode
*/
QContentEngine *QSqlContentStore::installContent( QContent *content )
{
+ qDebug() << "QSqlContentStore::installContent" << *content;
+
QContentEngine *engine = QContentEngine::createEngine( *content );
if( engine )
return engine;
QString fileName = content->fileName();
+ qDebug() << "QSqlContentStore::installContent fileName=" << fileName;
if( !fileName.isEmpty() )
{
+ qDebug() << "QSqlContentStore::installContent content->type=" << content->type();
+
QMimeType type = content->type().isEmpty()
? QMimeType::fromFileName( fileName )
: QMimeType::fromId( content->type() );
+ qDebug() << "QSqlContentStore::installContent mimeType=" << type;
+
QString name = deriveName( fileName, type );
QFileInfo fileInfo(fileName);
@@ -1322,6 +1359,8 @@ QContentList QSqlContentStore::contentFromIds( const QContentIdList &contentIds
*/
QContent QSqlContentStore::contentFromQuery( const QSqlQuery &query, QtopiaDatabaseId dbId ) const
{
+ qDebug() << "QSqlContentStore::contentFromQuery";
+
QContent::DrmState drmState = convertDrmState( query.value( 3 ).toInt() );
#ifndef QTOPIA_CONTENT_INSTALLER
@@ -1334,6 +1373,19 @@ QContent QSqlContentStore::contentFromQuery( const QSqlQuery &query, QtopiaDatab
setId( QContentId( dbId, query.value( 0 ).toULongLong() ), engine );
+ qDebug() << "query.value( 1 ).toString()=" << query.value( 1 ).toString();
+ qDebug() << "query.value( 2 ).toString()=" << query.value( 2 ).toString();
+ qDebug() << "query.value( 4 ).toString()=" << query.value( 4 ).toString();
+ qDebug() << "query.value( 5 ).toString()=" << query.value( 5 ).toString();
+ qDebug() << "query.value( 6 ).toString()=" << query.value( 6 ).toString();
+ qDebug() << "query.value( 7 ).toString()=" << query.value( 7 ).toString();
+ qDebug() << "query.value( 8 ).toString()=" << query.value( 8 ).toString();
+
+ qDebug() << "QMimeType::fromId( query.value( 2 ).toString()=" << QMimeType::fromId( query.value( 2 ).toString());
+ qDebug() << "constructFileName=" << constructFileName(
+ query.value( 5 ).toString(),
+ query.value( 6 ).toString() );
+
engine->setName( query.value( 1 ).toString() );
engine->setMimeType( QMimeType::fromId( query.value( 2 ).toString() ) );
engine->setFileName( constructFileName(
@@ -1700,6 +1752,8 @@ bool QSqlContentStore::removeProperties( QContentId id )
*/
QContent QSqlContentStore::desktopContent( const QString &fileName )
{
+ qDebug() << "QSqlContentStore::desktopContent fileName=" << fileName;
+
static const QString selectString = QLatin1String(
"SELECT content.cid, uiName, mimeTypeLookup.mimeType, drmFlags, docStatus, path, "
"locationLookup.location as directory, icon, lastUpdated "
@@ -1730,7 +1784,9 @@ QContent QSqlContentStore::desktopContent( const QString &fileName )
if( selectQuery.first() )
{
+ qDebug() << "QSqlContentStore::desktopContent 1";
QContent content = contentFromQuery( selectQuery, dbId );
+ qDebug() << "QSqlContentStore::desktopContent 2";
QContentCache::instance()->cache( content );
diff --git a/src/server/core_server/contentserver.cpp b/src/server/core_server/contentserver.cpp
index 0644927..aab48c6 100644
--- a/src/server/core_server/contentserver.cpp
+++ b/src/server/core_server/contentserver.cpp
@@ -288,7 +288,9 @@ void DirectoryScanner::scanPath(const QString& path, int depth, int priority)
QContentFilter removedPaths;
foreach (QString path, paths) {
+ qDebug() << "path=" << path;
if (!QFile::exists(path)) {
+ qDebug() << "1";
QContentIdList contentIds = QContentSet(QContentFilter::Directory, path).itemIds();
foreach (QContentId contentId, contentIds)
@@ -306,6 +308,8 @@ void DirectoryScanner::scanPath(const QString& path, int depth, int priority)
QStringList fileNames = QDir(dirPath).entryList(
QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
+ qDebug() << "fileNames=" << fileNames;
+
qSort(fileNames.begin(), fileNames.end(), binaryStringLessThan);
int db = 0;
@@ -345,7 +349,9 @@ void DirectoryScanner::scanPath(const QString& path, int depth, int priority)
++db;
} else if (comparison > 0) {
+ qDebug() << "2";
install(QFileInfo(dirPath + fsName));
+ qDebug() << "3";
++fs;
}
@@ -353,8 +359,11 @@ void DirectoryScanner::scanPath(const QString& path, int depth, int priority)
while(db < dbCount)
uninstall(dirContents.contentId(db++));
- while(fs < fsCount)
+ while(fs < fsCount) {
+ qDebug() << "4";
install(QFileInfo(dirPath + fileNames.at(fs++)));
+ qDebug() << "5";
+ }
if (depth < MaxSearchDepth)
foreach (QString fileName, QDir(dirPath).entryList(QDir::Dirs | QDir::NoDotAndDotDot))
@@ -417,11 +426,15 @@ QString DirectoryScanner::thumbnailPath(const QString &thumbnailDir, const QStri
void DirectoryScanner::install(const QFileInfo &fi)
{
+ qDebug() << "DirectoryScanner::install" << fi.fileName();
if (!QtopiaSql::instance()->isDatabase(fi.absoluteFilePath())) {
+ qDebug() << "DirectoryScanner::install 1";
m_pendingInstalls.append(fi);
if (m_pendingInstalls.count() == docsPerShot) {
+ qDebug() << "DirectoryScanner::install 2";
QContent::installBatch(m_pendingInstalls);
+ qDebug() << "DirectoryScanner::install 3";
m_pendingInstalls.clear();
}
_______________________________________________
Openmoko community mailing list
[email protected]
http://lists.openmoko.org/mailman/listinfo/community