Coder Social home page Coder Social logo

qtmir's Issues

catching polymorphic type ‘class std::runtime_error’ by value

Was building bionic branch on Arch GNU/Linux, faced this issue:

[ 42%] Building CXX object src/modules/Unity/Application/CMakeFiles/unityapplicationplugin.dir/upstart/taskcontroller.cpp.o
/mnt/antihype/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/src/modules/Unity/Application/upstart/taskcontroller.cpp: In function ‘std::shared_ptr<ubuntu::app_launch::Application> qtmir::upstart::{anonymous}::createApp(const QString&, std::shared_ptr<ubuntu::app_launch::Registry>)’:
/mnt/antihype/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/src/modules/Unity/Application/upstart/taskcontroller.cpp:81:33: error: catching polymorphic type ‘class std::runtime_error’ by value [-Werror=catch-value=]
     } catch (std::runtime_error e) {
                                 ^
cc1plus: all warnings being treated as errors
make[2]: *** [src/modules/Unity/Application/CMakeFiles/unityapplicationplugin.dir/build.make:278: src/modules/Unity/Application/CMakeFiles/unityapplicationplugin.dir/upstart/taskcontroller.cpp.o] Error 1

unreachable code

/src/platforms/mirserver/screen.cpp line 87:

case mir_pixel_format_xbgr_8888:
if (isLittleEndian()) {
// 0xRR,0xGG,0xBB,0xXX
return QImage::Format_RGBX8888;
} else {
// 0xXX,0xBB,0xGG,0xRR
qFatal("[mirserver QPA] "
"Qt doesn't support mir_pixel_format_xbgr_8888 in a big endian architecture");
}
break;
break; // <- unreachable

CMakeLists missing dependencies

This package depends on glm (<glm/glm.hpp>), and url-dispatcher (url-dispatcher.h), but cmake doesn't check for their existence (causing build-time errors if they are absent)

[ 16%] Building CXX object src/platforms/mirserver/CMakeFiles/qpa-mirserver-mirserver.dir/mirdisplayconfigurationpolicy.cpp.o
In file included from /mnt/antihype/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/src/platforms/mirserver/mirdisplayconfigurationpolicy.cpp:20:
/usr/include/mirplatform/mir/graphics/display_configuration.h:30:10: fatal error: glm/glm.hpp: No such file or directory
 #include <glm/glm.hpp>
          ^~~~~~~~~~~~~
compilation terminated.
[  5%] Building CXX object src/platforms/mirserver/CMakeFiles/qpa-mirserver-nomirserver.dir/services.cpp.o
/mnt/antihype/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/src/platforms/mirserver/services.cpp:22:10: fatal error: url-dispatcher.h: No such file or directory
 #include <url-dispatcher.h>
          ^~~~~~~~~~~~~~~~~~
compilation terminated.

qtmir fails to build against upstream v0.30.0.1 mir release

I've just tried to build qtmir against the mir 0.30.0.1 packages in upstream bionic. The build fails with multiple compiler errors related to API compatibility.

As far as I can tell the failures are down to the following patch introduced into the xenial branch and merged into bionic: b092933

This introduces multiple #if rules based on MIR_SERVER_VERSION. These seem unnecessary (qtmir builds if I revert this patch, but not with it) as well as being confusing: the top-level #if MIR_SERVER_VERSION >= MIR_VERSION_NUMBER(0, 30, 0) seems to contain other checks within it (such as #if MIR_SERVER_VERSION >= MIR_VERSION_NUMBER(0, 25, 0)) which will automatically be true if the top-level #if check is.

Absent a compelling reason I would suggest reverting the patch, as I believe it may block a solution to ubports/unity8#30.

problems with crossbuilder

Some things make crossbuilder not working for QtMir. I got it working after changing:

  • adding g++:native to debian/control (like with unity8)
  • created a link in the container: sudo ln -s ../../../qt5/bin/moc /usr/lib/x86_64-linux-gnu/qt5/bin/moc

destroyScreen, screenAdded removed from Qt 5.12

It appears that screenAdded and destroyAdded are no longer a thing

/tmp/qtmir/src/platforms/mirserver/mirserverintegration.cpp: In lambda function:
/tmp/qtmir/src/platforms/mirserver/mirserverintegration.cpp:160:15: error: ‘class MirServerIntegration’ has no member named ‘destroyScreen’
  160 |         this->destroyScreen(screen);
      |               ^~~~~~~~~~~~~
/tmp/qtmir/src/platforms/mirserver/mirserverintegration.cpp: In member function ‘virtual void MirServerIntegration::initialize()’:
/tmp/qtmir/src/platforms/mirserver/mirserverintegration.cpp:165:9: error: ‘screenAdded’ was not declared in this scope
  165 |         screenAdded(screen);
      |         ^~~~~~~~~~~

Fails to compile with Qt 5.14

Starting with Qt 5.14 qtmir doesn't compile anymore:

/home/pmos/build/src/qtmir-f1a612ce524c57f689b68c6f3b57fdfe8d169560/src/modules/Unity/Application/mirsurfaceitem.cpp: In member function 'virtual QSGNode* qtmir::MirSurfaceItem::updatePaintNode(QSGNode*, QQuickItem::UpdatePaintNodeData*)':
/home/pmos/build/src/qtmir-f1a612ce524c57f689b68c6f3b57fdfe8d169560/src/modules/Unity/Application/mirsurfaceitem.cpp:237:20: error: no matching function for call to 'QSGDefaultInternalImageNode::QSGDefaultInternalImageNode()'
  237 |         node = new QSGDefaultInternalImageNode;
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/pmos/build/src/qtmir-f1a612ce524c57f689b68c6f3b57fdfe8d169560/src/modules/Unity/Application/mirsurfaceitem.cpp:35:
/usr/include/QtQuick/5.14.1/QtQuick/private/qsgdefaultinternalimagenode_p.h:78:5: note: candidate: 'QSGDefaultInternalImageNode::QSGDefaultInternalImageNode(QSGDefaultRenderContext*)'
   78 |     QSGDefaultInternalImageNode(QSGDefaultRenderContext *rc);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/QtQuick/5.14.1/QtQuick/private/qsgdefaultinternalimagenode_p.h:78:5: note:   candidate expects 1 argument, 0 provided
make[2]: *** [src/modules/Unity/Application/CMakeFiles/unityapplicationplugin.dir/build.make:194: src/modules/Unity/Application/CMakeFiles/unityapplicationplugin.dir/mirsurfaceitem.cpp.o] Error 1

See qtdeclarative commit: qt/qtdeclarative@341ab77

Fixing this seems to be non-trivial, at least I haven't managed to do it yet.

-pthread flag missing

Building bionic branch on Arch GNU/Linux

[ 62%] Linking CXX executable QtEventFeederTest
/usr/bin/ld: ../../libGMock.a(gmock-all.cc.o): undefined reference to symbol 'pthread_key_delete@@GLIBC_2.2.5'
/usr/lib/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [tests/mirserver/QtEventFeeder/CMakeFiles/QtEventFeederTest.dir/build.make:132: tests/mirserver/QtEventFeeder/QtEventFeederTest] Error 1

-pthread is missing in target_link_libraries in tests/mirserver/QtEventFeeder/CMakeLists.txt

Same as ubports/url-dispatcher#4

Incompatible with gmock 1.8.1

Now fails to build on Arch GNU/Linux, bionic branch.

In file included from /home/vanyasem/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/tests/framework/mock_main_loop.h:21,
                 from /home/vanyasem/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/tests/framework/mock_main_loop.cpp:17:
/home/vanyasem/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/tests/framework/gmock_fixes.h: In instantiation of 'static testing::internal::ActionResultHolder<std::unique_ptr<_Tp> >* testing::internal::ActionResultHolder<std::unique_ptr<_Tp> >::PerformDefaultAction(const testing::internal::FunctionMockerBase<F>*, const typename testing::internal::Function<F>::ArgumentTuple&, const string&) [with F = std::unique_ptr<mir::time::Alarm>(mir::LockableCallback*); T = mir::time::Alarm; typename testing::internal::Function<F>::ArgumentTuple = std::tuple<mir::LockableCallback*>; testing::internal::string = std::__cxx11::basic_string<char>]':
/usr/include/gmock/gmock-spec-builders.h:1542:46:   required from 'testing::internal::UntypedActionResultHolderBase* testing::internal::FunctionMockerBase<F>::UntypedPerformDefaultAction(void*, const string&) const [with F = std::unique_ptr<mir::time::Alarm>(mir::LockableCallback*); std::__cxx11::string = std::__cxx11::basic_string<char>]'
/usr/include/gmock/gmock-spec-builders.h:1538:42:   required from here
/home/vanyasem/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/tests/framework/gmock_fixes.h:81:12: error: cannot bind rvalue reference of type 'testing::internal::RvalueRef<std::tuple<mir::LockableCallback*> >::type' {aka 'std::tuple<mir::LockableCallback*>&&'} to lvalue of type 'const ArgumentTuple' {aka 'const std::tuple<mir::LockableCallback*>'}
     return new ActionResultHolder(
            ^~~~~~~~~~~~~~~~~~~~~~~
         func_mocker->PerformDefaultAction(args, call_description));
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/gmock/gmock-generated-function-mockers.h:44,
                 from /usr/include/gmock/gmock.h:62,
                 from /home/vanyasem/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/tests/framework/gmock_fixes.h:39,
                 from /home/vanyasem/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/tests/framework/mock_main_loop.h:21,
                 from /home/vanyasem/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/tests/framework/mock_main_loop.cpp:17:
/usr/include/gmock/gmock-spec-builders.h:1511:10: note:   initializing argument 1 of 'testing::internal::FunctionMockerBase<F>::Result testing::internal::FunctionMockerBase<F>::PerformDefaultAction(typename testing::internal::RvalueRef<typename testing::internal::Function<F>::ArgumentTuple>::type, const string&) const [with F = std::unique_ptr<mir::time::Alarm>(mir::LockableCallback*); testing::internal::FunctionMockerBase<F>::Result = std::unique_ptr<mir::time::Alarm>; typename testing::internal::RvalueRef<typename testing::internal::Function<F>::ArgumentTuple>::type = std::tuple<mir::LockableCallback*>&&; std::__cxx11::string = std::__cxx11::basic_string<char>]'
   Result PerformDefaultAction(
          ^~~~~~~~~~~~~~~~~~~~
In file included from /home/vanyasem/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/tests/framework/mock_main_loop.h:21,
                 from /home/vanyasem/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/tests/framework/mock_main_loop.cpp:17:
/home/vanyasem/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/tests/framework/gmock_fixes.h: In instantiation of 'static testing::internal::ActionResultHolder<std::unique_ptr<_Tp> >* testing::internal::ActionResultHolder<std::unique_ptr<_Tp> >::PerformDefaultAction(const testing::internal::FunctionMockerBase<F>*, const typename testing::internal::Function<F>::ArgumentTuple&, const string&) [with F = std::unique_ptr<mir::time::Alarm>(const std::function<void()>&); T = mir::time::Alarm; typename testing::internal::Function<F>::ArgumentTuple = std::tuple<const std::function<void()>&>; testing::internal::string = std::__cxx11::basic_string<char>]':
/usr/include/gmock/gmock-spec-builders.h:1542:46:   required from 'testing::internal::UntypedActionResultHolderBase* testing::internal::FunctionMockerBase<F>::UntypedPerformDefaultAction(void*, const string&) const [with F = std::unique_ptr<mir::time::Alarm>(const std::function<void()>&); std::__cxx11::string = std::__cxx11::basic_string<char>]'
/usr/include/gmock/gmock-spec-builders.h:1538:42:   required from here
/home/vanyasem/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/tests/framework/gmock_fixes.h:81:12: error: cannot bind rvalue reference of type 'testing::internal::RvalueRef<std::tuple<const std::function<void()>&> >::type' {aka 'std::tuple<const std::function<void()>&>&&'} to lvalue of type 'const ArgumentTuple' {aka 'const std::tuple<const std::function<void()>&>'}
     return new ActionResultHolder(
            ^~~~~~~~~~~~~~~~~~~~~~~
         func_mocker->PerformDefaultAction(args, call_description));
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/gmock/gmock-generated-function-mockers.h:44,
                 from /usr/include/gmock/gmock.h:62,
                 from /home/vanyasem/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/tests/framework/gmock_fixes.h:39,
                 from /home/vanyasem/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/tests/framework/mock_main_loop.h:21,
                 from /home/vanyasem/Projects/AUR/_Unity8/_Unity8-Arch/qtmir-git/src/qtmir/tests/framework/mock_main_loop.cpp:17:
/usr/include/gmock/gmock-spec-builders.h:1511:10: note:   initializing argument 1 of 'testing::internal::FunctionMockerBase<F>::Result testing::internal::FunctionMockerBase<F>::PerformDefaultAction(typename testing::internal::RvalueRef<typename testing::internal::Function<F>::ArgumentTuple>::type, const string&) const [with F = std::unique_ptr<mir::time::Alarm>(const std::function<void()>&); testing::internal::FunctionMockerBase<F>::Result = std::unique_ptr<mir::time::Alarm>; typename testing::internal::RvalueRef<typename testing::internal::Function<F>::ArgumentTuple>::type = std::tuple<const std::function<void()>&>&&; std::__cxx11::string = std::__cxx11::basic_string<char>]'
   Result PerformDefaultAction(
          ^~~~~~~~~~~~~~~~~~~~

Deprecation warnings on Qt 5.14

/home/pmos/build/src/qtmir-f1a612ce524c57f689b68c6f3b57fdfe8d169560/src/platforms/mirserver/qteventfeeder.cpp: In member function 'virtual void {anonymous}::QtWindowSystem::handleMouseEvent(ulong, QPointF, QPointF, Qt::MouseButtons, Qt::KeyboardModifiers)':
/home/pmos/build/src/qtmir-f1a612ce524c57f689b68c6f3b57fdfe8d169560/src/platforms/mirserver/qteventfeeder.cpp:453:120: error: 'static void QWindowSystemInterface::handleMouseEvent(QWindow*, ulong, const QPointF&, const QPointF&, Qt::MouseButtons, Qt::KeyboardModifiers, Qt::MouseEventSource) [with Delivery = QWindowSystemInterface::DefaultDelivery; ulong = long unsigned int; Qt::MouseButtons = QFlags<Qt::MouseButton>; Qt::KeyboardModifiers = QFlags<Qt::KeyboardModifier>]' is deprecated [-Werror=deprecated-declarations]
  453 |             QWindowSystemInterface::handleMouseEvent(focusedWindow(), timestamp, absolute, absolute, buttons, modifiers);
      |                                                                                                                        ^
In file included from /home/pmos/build/src/qtmir-f1a612ce524c57f689b68c6f3b57fdfe8d169560/src/platforms/mirserver/qteventfeeder.h:22,
                 from /home/pmos/build/src/qtmir-f1a612ce524c57f689b68c6f3b57fdfe8d169560/src/platforms/mirserver/qteventfeeder.cpp:17:
/usr/include/QtGui/5.14.1/QtGui/qpa/qwindowsysteminterface.h:85:31: note: declared here
   85 |     QT_DEPRECATED static void handleMouseEvent(QWindow *window, ulong timestamp, const QPointF &local, const QPointF &global, Qt::MouseButtons b,
      |                               ^~~~~~~~~~~~~~~~
/home/pmos/build/src/qtmir-f1a612ce524c57f689b68c6f3b57fdfe8d169560/src/platforms/mirserver/qteventfeeder.cpp:453:120: error: 'static void QWindowSystemInterface::handleMouseEvent(QWindow*, ulong, const QPointF&, const QPointF&, Qt::MouseButtons, Qt::KeyboardModifiers, Qt::MouseEventSource) [with Delivery = QWindowSystemInterface::DefaultDelivery; ulong = long unsigned int; Qt::MouseButtons = QFlags<Qt::MouseButton>; Qt::KeyboardModifiers = QFlags<Qt::KeyboardModifier>]' is deprecated [-Werror=deprecated-declarations]
  453 |             QWindowSystemInterface::handleMouseEvent(focusedWindow(), timestamp, absolute, absolute, buttons, modifiers);
      |                                                                                                                        ^
In file included from /home/pmos/build/src/qtmir-f1a612ce524c57f689b68c6f3b57fdfe8d169560/src/platforms/mirserver/qteventfeeder.h:22,
                 from /home/pmos/build/src/qtmir-f1a612ce524c57f689b68c6f3b57fdfe8d169560/src/platforms/mirserver/qteventfeeder.cpp:17:
/usr/include/QtGui/5.14.1/QtGui/qpa/qwindowsysteminterface.h:85:31: note: declared here
   85 |     QT_DEPRECATED static void handleMouseEvent(QWindow *window, ulong timestamp, const QPointF &local, const QPointF &global, Qt::MouseButtons b,
      |                               ^~~~~~~~~~~~~~~~

I found this commit on Qt's gerrit, maybe it's useful: https://codereview.qt-project.org/c/qt/qtwayland/+/278369

Add missing license file

Currently this project is unlicensed, please add one (or multiple) in the root of this project.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.