Qt 5.3 for Haiku progress

Forum thread started by 3dEyes on Sun, 2014-07-20 04:00
Last week I started work on a port of Qt 5.3.1.
Already there has been some progress.
  1. First native QPA test
  2. Simple mouse handler
  3. Qt Designer
  4. Simple keyboard mapper and fusion style for controls
  5. QtWebKit demo browser
  6. Otter-browser

All Qt5 modules successfully builded except QtQuick 2.0 and WebKit2. They require support OpenGL in QPA plugin. I have never worked with OpenGL and have no idea where to start. We need to implement a few functions to create an OpenGL context. If there is a wish to help with OpenGL - you are welcome.

The code will be available on github soon.

Comments

Re: Qt 5.3 for Haiku progress

Hi tokoe! Nice work! I'm the "de-facto" manager of the Qt4 port for Haiku at this point. There is a GitHub organization for the code: https://github.com/qt-haiku -- can you move your work here? I'll happily add you to the organization.

Re: Qt 5.3 for Haiku progress

Hej Munchausen,

I basically created the QPA plugin for Haiku, so at the moment the basic window handling stuff is supported:
- show widgets on screen
- mouse and keyboard interaction (focus handling)
- window handling (minimize/maximize), setting window title
- clipboard handling
- cursor handling
- basic screen handling (e.g. request screen geometry)
- support for QPlatformServices
- support for QStandardDirs
- support for QPlatformScreen::grabWindow()

I also have a private branch here that contains OpenGL support, but I wouldn't call it stable yet. I'm unsure how to integrate the BGLView and the QPlatformOpenGLContext in a way that context sharing is done properly.
The simple OpenGL examples from Qt are running already, but the more advanced ones fail (which could on the other hand be an issue with my VirtualBox instance I'm using for development). If you are interested in the OpenGL patch, I can send you a copy, just drop me a mail to tobias.koenig at kdab.com.

Some month ago I also tried to port the qtdeclarative module, but since some 3rd-party libraries and the V8 JS engine was not ported to Haiku yet (and I didn't want to litter the code with #ifdefs), I stalled these actions.
Maybe now, with QML using V4, it might be worth a try again... if I find some spare time ;)

Btw, is there a Haiku mailing list where I can ask further questions about BGLView integration?

Re: Qt 5.3 for Haiku progress

Hej waddlesplash,

is there a specific reason why that code is kept in a separated repository? Since the Haiku APIs are quite stable, wouldn't it make sense to upstream the code for Qt5 support into the official Qt repository? That would allow us to keep track of changes in Qt more easily (no merging needed) and we can push for integration into Qt's CI system.
I fear the Haiku port will never be a Tier 1 architecture for Qt, but at least a Tier 3 is possible. What do you think?

Re: Qt 5.3 for Haiku progress

1. Yes, there is a place to ask: the haiku-3rdparty mailing list. There's a link on the mailing list page. However I doubt VirtualBox is causing any issues as we don't have hardware-accelerated OpenGL of any kind nor a VirtualBox video driver.

2. Upstreaming would be awesome, yes. However due to how much work that is and how little time everyone has I'm not sure we could keep it up-to-date all the time (the qt4 port was severely behind until I took some time to get it up to speed). Do you have time to do this work? Or should I? I've never submitted a Gerrit pull request before ever, although I'm quite familiar with the Qt APIs.

Re: Qt 5.3 for Haiku progress

Hej waddlesplash,

ok, I'll join the haiku-3rdparty mailing list then for further discussion of the OpenGL support.

Since my company works a lot with Qt and has an Open Source background, my boss allowed me to use part of my education time to drive the upstreaming and maintenance of the Haiku Qt port. I've a Gerrit account and am used to the procedures of upstreaming code to the Qt repository, so that shouldn't be the limiting factor :)
Do you want to join the Qt Gerrit as well, so that you can do code reviews?

Re: Qt 5.3 for Haiku progress

Yes, that sounds good. I signed into Gerrit and set it up (I already had a Qt Bugtracker account). Let me know when a "haiku" Gerrit project is created so I can watch it. :)

Re: Qt 5.3 for Haiku progress

Hi Tokoe,

I'm writing up the list of features for the next release. I would like to include Qt 5.3 if there is enough development completed by the release. What do you expect to be working in the next month or two? What don't you expect to be working in the next month or two?

Re: Qt 5.3 for Haiku progress

Hej AndrewZ,

we'll upstream the changes to Qt 5.5 (Qt 5.4 branch is in feature-freeze already, since it has been released last week already), so for an 'official' Qt on Haiku release we'd have to wait anyway.
I cannot give any guarantees what will be included or not, it highly depends on how fast upstreaming will happen (we have to wait for approval from other Qt developers for every commit, some discussion expected) and how much time I can spend on it from my spare/education time.

Re: Qt 5.3 for Haiku progress

It has been about a month now since the last discussion. Could you elaborate on areas where the current QT5 port needs additional work ? what level of functionality it has ?

Re: Qt 5.3 for Haiku progress

Hi thatguy!

In the past month, Tokoe has started upstreaming his work and I've started reviewing it. So far, the Core and Network modules compile and generally work. Tokoe submitted code for QPA (QtGui/QtWidgets/QtQuick, basically) this morning, so that should be merged in the next few weeks.

Re: Qt 5.3 for Haiku progress

Nice work, guys. Does Qt 5.5 bring any new apps?

Re: Qt 5.3 for Haiku progress

any more progress to report ?

Re: Qt 5.3 for Haiku progress

tokoe wrote:

Hej Munchausen,

I basically created the QPA plugin for Haiku, so at the moment the basic window handling stuff is supported:
- show widgets on screen
- mouse and keyboard interaction (focus handling)
- window handling (minimize/maximize), setting window title
- clipboard handling
- cursor handling
- basic screen handling (e.g. request screen geometry)
- support for QPlatformServices
- support for QStandardDirs
- support for QPlatformScreen::grabWindow()

I also have a private branch here that contains OpenGL support, but I wouldn't call it stable yet. I'm unsure how to integrate the BGLView and the QPlatformOpenGLContext in a way that context sharing is done properly.
The simple OpenGL examples from Qt are running already, but the more advanced ones fail (which could on the other hand be an issue with my VirtualBox instance I'm using for development). If you are interested in the OpenGL patch, I can send you a copy, just drop me a mail to tobias.koenig at kdab.com.

Some month ago I also tried to port the qtdeclarative module, but since some 3rd-party libraries and the V8 JS engine was not ported to Haiku yet (and I didn't want to litter the code with #ifdefs), I stalled these actions.
Maybe now, with QML using V4, it might be worth a try again... if I find some spare time ;)

Btw, is there a Haiku mailing list where I can ask further questions about BGLView integration?

I think a gentlemen named hamish may have attempted the V8 port, I think he goes by hamishm on irc

Re: Qt 5.3 for Haiku progress

just a ping for march

Re: Qt 5.3 for Haiku progress

The QPA port is upstreamed, so we're now waiting on a few more critical things -- clipboard, QWaitCondition, etc.

Sadly we didn't make it into Qt 5.5 -- the QPA plugin was merged a few days late for that. I'll probably just apply the QPA plugin and the other changes since then as patches against 5.5, and then do a release and upload packages. Not much longer, then -- a few months.

Re: Qt 5.3 for Haiku progress

thank you for the update, I was just curious how the progress was, maybe do a blog post every few weeks just to let people know it is in the works.