diff options
author | zheng_wenlong <wenlong_zheng@nexty-ele.com> | 2017-09-29 21:06:22 +0900 |
---|---|---|
committer | Yuta Doi <yuta-d@witz-inc.co.jp> | 2017-10-09 01:48:59 +0900 |
commit | 074d058a7a483a66af7f8c0b928b321ad483f47c (patch) | |
tree | eb89aacd178a7b99850cbdc528976e97d35d37bf /client/main.cpp | |
parent | 7204e00b05cab896df48abf6a355be69a0f57f80 (diff) |
Add agl-service-windowmanager-2017
Add a new binding agl-service-windowmanager-2017.
A image about this see JIRA SPEC-915.
[PatchSet2]
Use aglwgt make package.
[PatchSet3]
Modify to wait until wayland compositor starts up.
Bug-AGL: SPEC-925
Change-Id: I8729bb71b5e91d5b009a5bab77232d92605c43ea
Signed-off-by: zheng_wenlong <wenlong_zheng@nexty-ele.com>
Diffstat (limited to 'client/main.cpp')
-rw-r--r-- | client/main.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/client/main.cpp b/client/main.cpp new file mode 100644 index 0000000..3dc2e42 --- /dev/null +++ b/client/main.cpp @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2017 TOYOTA MOTOR CORPORATION + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include <QDebug> +#include <QDir> +#include <QGuiApplication> +#include <QQmlApplicationEngine> +#include <QQmlContext> +#include <QQuickView> +#include <QQuickWindow> +#include "communication.h" + +#include "qlibwindowmanager.h" + +int main(int argc, char *argv[]) { + QGuiApplication app(argc, argv); + + qDebug() << QCoreApplication::arguments(); + + if (QCoreApplication::arguments().count() < 5) { + qWarning() << "Wrong parameters specified for the application. " + "Please restart with correct parameters:" + "width, height, name, color [port] [token]:\n\n" + "/usr/bin/WindowManagerSampleApp/" + "qmlWindowManagerSampleApp width height name color\n"; + exit(EXIT_FAILURE); + } + + QString label = QCoreApplication::arguments().at(3); + + QLibWindowmanager* qwm = new QLibWindowmanager(); + + QString token = "wm"; + int port = 1700; + if(QCoreApplication::arguments().count() == 7){ + bool ok; + port = QCoreApplication::arguments().at(5).toInt(&ok); + if(ok == false){ + port = 1700; + } + else{ + token = QCoreApplication::arguments().at(6); + } + } + const char* ctoken = token.toLatin1().data(); + if (qwm->init(port, ctoken) != 0) { + exit(EXIT_FAILURE); + } + + if (qwm->requestSurface( + QCoreApplication::arguments().at(3).toLatin1().data()) != 0) { + exit(EXIT_FAILURE); + } + + qwm->set_event_handler(QLibWindowmanager::Event_SyncDraw, [qwm](char const *label) { + fprintf(stderr, "Surface %s got syncDraw!\n", label); + qwm->endDraw(label); + }); + qwm->set_event_handler(QLibWindowmanager::Event_Active, [](char const *label) { + fprintf(stderr, "Surface %s got activated!\n", label); + }); + qwm->set_event_handler(QLibWindowmanager::Event_Visible, [](char const *label) { + fprintf(stderr, "Surface %s got visible!\n", label); + }); + qwm->set_event_handler(QLibWindowmanager::Event_FlushDraw, [](char const *label) { + fprintf(stderr, "Surface %s got flushDraw!\n", label); + }); + + communication comm; + comm.setWidth(QCoreApplication::arguments().at(1).toUInt()); + comm.setHeight(QCoreApplication::arguments().at(2).toUInt()); + comm.setAppName(label); + comm.setColor(QCoreApplication::arguments().at(4)); + + QQmlApplicationEngine engine; + engine.rootContext()->setContextProperty("COMM", &comm); + + engine.load( + QUrl(QStringLiteral("qrc:/extra/WindowManagerSampleApp.qml"))); + QObject *root = engine.rootObjects().first(); + QQuickWindow *window = qobject_cast<QQuickWindow *>(root); + QObject::connect(root, SIGNAL(frameSwapped()), qwm, SLOT(slotActivateSurface())); + + return app.exec(); +} |