The main application for a simple window manager.
/*
* $QNXLicenseC:
* Copyright 2012, QNX Software Systems Limited. All Rights Reserved.
*
* This software is QNX Confidential Information subject to
* confidentiality restrictions. DISCLOSURE OF THIS SOFTWARE
* IS PROHIBITED UNLESS AUTHORIZED BY QNX SOFTWARE SYSTEMS IN
* WRITING.
*
* You must obtain a written license from and pay applicable license
* fees to QNX Software Systems Limited before you may reproduce, modify
* or distribute this software, or any work that includes all or part
* of this software. For more information visit
* http://licensing.qnx.com or email licensing@qnx.com.
*
* This file may contain contributions from others. Please review
* this entire file for other proprietary rights or license notices,
* as well as the QNX Development Suite License Guide at
* http://licensing.qnx.com/license-guide/ for other information.
* $
*/
#include "struct.h"
static void main_setup_default(window_manager_t *winmgr){
winmgr->background = 1;
winmgr->pps_fd = -1;
winmgr->state = WINMGR_UPDATE;
winmgr->verbose = 1;
winmgr->car_app.id = strdup("100");
winmgr->car_app.data = strdup("carcontrol.testDev_carcontrol_21522f09,\
WIDTH=800,HEIGHT=395");
winmgr->weather_app.id = strdup("101");
winmgr->weather_app.data = strdup("sys.browser.gYABgJYFHAzbeFMPCCpYWBtHAm0,\
WIDTH=800,HEIGHT=395");
winmgr->screen_tid = -1;
}
int main(int argc, char **argv)
{
int rc;
window_manager_t window_manager;
memset(&window_manager, 0, sizeof(window_manager_t));
window_manager_t *winmgr = &window_manager;
main_setup_default(winmgr);
rc = screen_init(winmgr, argc, argv);
if (rc != EOK){
exit(EXIT_FAILURE);
}
// create a pps thread and here
if (pthread_create(NULL, NULL, pps_thread, (void*)winmgr) < 0) {
SLOG_ERROR("Failed to create a pps thread (%d:%s)", errno, strerror(errno));
}
if (pthread_create(NULL, NULL, screen_thread, (void*)winmgr) < 0) {
SLOG_ERROR("Failed to create a screen thread (%d:%s)", errno, strerror(errno));
}
// launcher apps
while(winmgr->pps_fd == -1){
sleep(1);
}
launcher_send(winmgr, CMD_START, winmgr->car_app.data, winmgr->car_app.id);
launcher_send(winmgr, CMD_START, winmgr->weather_app.data, winmgr->weather_app.id);
sleep(30);
launcher_send(winmgr, CMD_STOP, "", "");
sleep(5);
// create a self_detached thread
pthread_cancel(winmgr->pps_tid);
pthread_cancel(winmgr->screen_tid);
return EXIT_SUCCESS;
}