Library table not displaying on Windows with Qt 4.5.x

Bug #586729 reported by Sean M. Pappalardo on 2010-05-28
18
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Mixxx
High
Unassigned
1.8
High
Sean M. Pappalardo

Bug Description

Trunk r2405 introduces a change that breaks the library table on 64-bit Windows only: it doesn't display anything, not even column headers, no matter if used on a previously valid db file or allowed to create a new one. The temporary view returns no errors, however:

Debug: [Main]: Query: "CREATE TEMPORARY VIEW IF NOT EXISTS library_view AS SELECT library.id,library.artist,library.title,library.album,library.year,library.duration,library.genre,library.tracknumber,library.datetime_added,library.bpm,track_locations.location,library.comment,library.mixxx_deleted FROM library INNER JOIN track_locations ON library.location = track_locations.id "
Debug: [Main]: Last error: QSqlError(-1, "", "")

Also of note: using a library file created with r2405 (or later) with a version of Mixxx from r2404 or earlier results in the same symptoms. (Allowing Mixxx r2404 or older to re-create the DB file fixes it.)

Workaround: use setTable("library"); in librarytablemodel.cpp at line 45 and comment out the "library_view" one.

description: updated
description: updated
summary: - Library table not displaying on Windows
+ Library table not displaying and crashing on Windows
description: updated
summary: - Library table not displaying and crashing on Windows
+ Library table not displaying on Windows
description: updated

Due to this only happening on x64, this might be a Qt bug. Albert, please check and confirm and report one to them if so.

summary: - Library table not displaying on Windows
+ Library table not displaying on Windows x64
description: updated
Albert Santoni (gamegod) wrote :

If you can get a library that works with >= r2405, can you check if playlist and crates work? They use temporary view the same way as I change us to use for the library...

Tested with r2409 and crates and playlists also show the problem.

BTW, I'm using Qt 4.5.2 on x64 (because 4.6's scripting is broken on x64.)

Just tested building on Win32 against Qt 4.5 and the problem shows up. So it's a Qt bug. Fantastic, since that means we can't have a 100% 64-bit build unless I build against Qt 4.7 beta. (Maybe they'll release the final before we package 1.8.0 final??)

Changed in mixxx:
assignee: Albert Santoni (gamegod) → nobody
status: Confirmed → Invalid

This is a reminder to myself to try cherry-picking the Qt DLLs/LIB files: use Qt 4.5.3 for everything except QtSql.

summary: - Library table not displaying on Windows x64
+ Library table not displaying on Windows with Qt 4.5.x
Changed in mixxx:
status: Invalid → Triaged
milestone: 1.8.0 → none
RAFFI TEA (raffitea) wrote :

Cherry-picking the Qt DLLs/LIB does not work for me.

Yeah, you have to shuffle source files and rebuild Qt. I got it to work on Windows x64 by doing this:
1) Get the Qt 4.5 source (since it's the most stable at the moment)
2) Lift the QtSql code from Qt 4.6.x from various directories (I made a list but don't have it handy now) and drop it in the 4.5.x source tree
3) Re-build Qt
4) Build Mixxx against this custom Qt build

I'll be doing this for x86 as well for beta2.

RAFFI TEA (raffitea) wrote :

I used a customized QT 4.6.3 build which fixes visual curruptions on Windows. The patch can be found here: http://qt.gitorious.org/qt/qt/commit/38adb59a9e80a23d37ff0820ef62ebd45ab1e4ae

Works fine on very fast systems but on older systems it may decrease performance (I still hear disturbing noise on my old sony vaio, dual core 2 duo, 2 Ghz RAM, Windows XP and Windows 7 x86, Audio 4 DJ at 5ms)

I built the beta2 packages with my customized Qt 4.5.3 + QtSql from 4.6.2 build and it tests fine. 1.8.0 final will be built with this as well, unless Qt 4.6.4 shows any promise.

Here's the info to recreate the same customized build:

Start with 4.5.x source and copy the following (with all subfolders) from the 4.6.x source into it:

src\sql
src\plugins\sqldrivers
src\3rdparty\sqlite
include\QtSql
include\Qt\qsql*.h

Then just build Qt as usual, making sure to add the FTS3 define in C:\qt-everywhere-opensource-src-4.6.x\src\plugins\sqldrivers\sqlite\sqlite.pro. (See http://mixxx.org/wiki/doku.php/build_windows_dependencies#prepare_build_environment)

Changed in mixxx:
status: Triaged → Fix Committed
Albert Santoni (gamegod) wrote :

In Brian's OS X package, I have what looks like the same problem. It's built using Qt 4.5.3, and the library table doesn't show up for me. I don't see any errors in the log, and it's loaded the SQLite driver with no problems.

I use Qt 4.6.0 for my builds on OS X and I don't experience this problem.

Albert Santoni (gamegod) wrote :

Cherry picking QtSql and libqsqlite.dylib on OS X doesn't work either. Those files from Qt 4.6.0 need QtCore from 4.6.0.

Right, which is why I ended up having to just rebuild all of Qt 4.5 with the QtSQL source from 4.6. It seems to work just fine. While I was forced to do this so Mixxx would work 100% on x64, you can probably just use Qt 4.6.x and be fine, unless there are graphics performance issues introduced with 4.6 like we see on Linux.

Yeah, that's the problem. IIRC Jus said Qt 4.6 introduced performance
problems for him on his Macbook Pro (GeForce). +1 for tiling waveform
renderer.

On Wed, Jun 30, 2010 at 11:19 PM, Pegasus <email address hidden> wrote:
> Right, which is why I ended up having to just rebuild all of Qt 4.5 with
> the QtSQL source from 4.6. It seems to work just fine. While I was
> forced to do this so Mixxx would work 100% on x64, you can probably just
> use Qt 4.6.x and be fine, unless there are graphics performance issues
> introduced with 4.6 like we see on Linux.
>
> --
> Library table not displaying on Windows with Qt 4.5.x
> https://bugs.launchpad.net/bugs/586729
> You received this bug notification because you are a member of Mixxx
> Development Team, which is subscribed to Mixxx.
>

RJ Skerry-Ryan (rryan) on 2010-10-05
Changed in mixxx:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers