aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2018-07-19Revert "Add policy table generated by ZIPC for EXAMPLE"Jan-Simon Moeller35-5899/+0
This reverts commit 67f414f67ee22ddf40003d1be3fa1d0cb13deb8f. Change-Id: I8489ed8e7789590ae585807108c64539a0ab3cf2
2018-07-12Add policy table generated by ZIPC for EXAMPLEYuta Doi35-0/+5899
To PolicyManager, add the source code of policy table which is generated by ZIPC for EXAMPLE. If use this example, please comment out line 84 and uncomment line 85 in CMakeLists.txt as follows: #set(USE_STM_NAME stub) set(USE_STM_NAME zipc) If try to show split layout, please rename from roles.db.split to roles.db in src/policy_manager/db/. Bug-AGL: SPEC-1537 Change-Id: I4b35f148313e0c5a12c59ed1c2f8eb6fbcf3ea6b Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2018-07-12Add PolicyManager as pluginYuta Doi17-395/+2756
PolicyManager decides next layout by using occured event and current state based on the policy table. And PolicyManager is plugin for WindowManager. Therefore the OEMs can replace it. This patch provides PolicyManager I/F as reference implementation and does not have policy table. Therefore PolicyManager updates each layers to draw the applications in normal.full area in accordance with just like activate/deactivate request. [APIs of PolicyManager class] - int initialize(void) Initialize PolicyManger. input: none output: 0(success), -1(error) - void registerCallback(CallbackTable callback_table) Register callback functions. input: the pointers of callback handlers output: none "CallbackTable" type is as follows: typedef struct { Handler onStateTransitioned; Handler onError; } CallbackTable; "Handler" type is as follows: using Handler = std::function<void(json_object *)>; - int setInputEventData(json_object *json_in) Set input event data for the policy table. input: input event data as json_object output: 0(success), -1(error) - int executeStateTransition(void) Execute state transition by using set input event data. input: none output: 0(success), -1(error) - void undoState(void) Undo state only once per once state transition. input: none output: none [Callbacks of PolicyManager class] - void onStateTransitioned(json_object *json_out) When state transition succeeds, this callback is called. The argument json_out has the state after transition. - void onError(json_object *json_out) When state transition fails, this callback is called. The argument json_out has the error information like message, inputed event datas and etc.. Bug-AGL: SPEC-1537 Change-Id: I44b771d4145078bf3ea05e26165bb9c1a03b10c3 Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2018-07-11Enable scaling to fit various screen resolutionsKazumasa Mitsunari9-22/+212
Since the AGL HomeScreen of CES2018 assumes that the screen resolution is 1080x1920px, the graphics of it partially corrupted with others. To fix this issue, now the AGL window manager automatically scales size according to "scaling" value in setting.json By default(even if "scaling" is not set), this scaling keeps 'fullscreen' aspect rate in area.db("aspect_fit") User can select 3 options. - "aspect_fit" : Scale aspect rate of 'fullscreen' in area.db.(default) - "display_fit": Force to scale to display size. - "none" or others : Set size just as area.db Bug-AGL: SPEC-1568 Bug-AGL: SPEC-1569 Change-Id: Ia08c0ebb2d71ae8f89a90088e181381c3ba3562d Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-07-10Forbid negative value for area sizeKazumasa Mitsunari2-39/+26
It is not intuitive to set negative value as size. So forbit negative value. Change-Id: I49480653284158b6d1bfcb22a71d9882ed958518 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-07-09Rename event names to lower camel caseYuta Doi1-3/+3
Change-Id: I973610e2b47ebd842291d568bd88578150efcef5 Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2018-07-09Rename APIsYuta Doi1-4/+4
rename WindowManager APIs as follows: - activateSurface -> activateWindow - deactivateSurface -> deactivateWindow The "surface" means information of display material frame buffer managed by Graphics Subsystem (Weston). And the "window" means the right to draw on display. The "surface" is physical information and used inside WindowManager. So we think it is not good for "surface" to be included in API name. These APIs provide the function which is to activate/deactivate the right to draw for the applications. So we change to "activateWindow/deactivateWindow". We plan to delete the old API by GG. Therefore the applications can use old APIs until GG, but the warning "-Wdeprecated-declarations" is occured when compile. After GG, old APIs can not be used. If use it, the error is occured when compile. Bug-AGL: SPEC-1565 Change-Id: Ic7da4e5ddb759e642a2b60ecf61e327aaf74a699 Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2018-07-09Add configuration file for each area sizesYuta Doi7-64/+297
Add areas.db which has each area sizes. less-than-0 values refer to (MAX + 1 - $VALUE) and MAX is either screen width or height. layers.json had each area sizes until now, so removed the sizes from it. Change-Id: I5cf283581daaca41e2b9e3ee6e947478bff1189c Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2018-07-09Convert the roles from old one to newYuta Doi7-40/+414
Update the role name (drawing_name) and WindowManager converts the role from old one to new. We plan to delete the old roles by GG. Therefore the applications can use old olds until GG, After GG, old roles can not be used. If the applications use it, WindowManager regards the applications as the role "fallback". Therefore the applications may not be displayed in the intended layout. For the role "fallback", please refer to JIRA SPEC-1331. Bug-AGL: SPEC-1566 Change-Id: I6ca703183e3cab72ac460094ef14dc3675a98cb6 Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2018-06-28Add signal when the displayed application changedKazumasa Mitsunari2-0/+37
Add new signal "screen_updated" to Window Manager. This is emitted when application size or visibility is changed, the application ids are notified to subscribers. There are some applications such like HomeScreen, which needs the visibility of other applications turns on, so add new event. The key is "ids" and data is application id which is written in config.xml for each application. This signal format is here: ON-EVENT windowmanager/screen_updated: { "event":"windowmanager\/screen_updated", "data":{ "ids":[ "navigation", "hvac" ] }, "jtype":"afb-event" } Bug-AGL: SPEC-1532 Change-Id: I6c1f263be00d4b496e0e0f77dd88b6118489772f Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-06-27Clean: sort source code according to the order of header fileKazumasa Mitsunari2-334/+339
Sort API order written in source code according to the order in header file to improve readability. Change-Id: I6606590ce2ad9c285b3cfd83dc6c0741890b105f Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-06-27Fix class name "App" to "WindowManager"Kazumasa Mitsunari5-94/+94
struct App is core class of Window Manager. The name of "struct App" is strange so rename it to WindowManager. Change-Id: Ia5f2e5acbadb8d58fe772aec0cd15a4a2e91369e Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-06-27Refactor: Integrate rework handles by applicationKazumasa Mitsunari3-367/+828
Integrate rework handles information by application. Window Manager handles request by "task" and block other requests until the task finishes. This is necessary because window mangaer task consists of 2 asyncronous parts, which are checking policy and redraw sync, and ensures the 2 parts should be managed consecutively. Bug-AGL: SPEC-1510 Change-Id: I9a1d5daad5b47dd5e68a437173b3d5f1b3923865 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-06-27Rework: Window Manager handles by applicationKazumasa Mitsunari10-3/+1113
To manage role, surface, layer ... and other info more easily, Window Manager handles info by application. WMClient class holds infomation of application. WMRequest class holds the request from application(trigger) and the action list judged by policy manager. The above info is in applist. *applist Hold client list. And hold request list which comes from application to get the right of displaying. *request The request from application and the Action judged from Policy Manager *client Application information which has surface, role and so on. *error Error code and error message. Integration patch is going to be pushed after this commit. Bug-AGL: SPEC-1509 Change-Id: I52b161701e22e316137dc42f073b118d164c1e28 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-06-27Add Get/Set area size functionsKazumasa Mitsunari3-0/+62
Add internal functions to get/set area size. Change-Id: I9fef787863bed81fe6e4761c6f387886d7df1455 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-06-25Bug Fix: Window Manager doesn't react after killing app processKazumasa Mitsunari3-32/+12
After killing an application which has surfaces, Window Manager releases the information for app. Then, invalid access happens. As a result, Application seems to loose their ability to display. This is a potencial bug caused by upgrades of wayland-ivi-extension, so this problem didn't occur in eel branch. This patch fixes the bug. Bug-AGL: SPEC-1421 Change-Id: If921dd4ea6bd46454356e97e1be7e5c136c7383b Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-06-25Clean: remove small filesKazumasa Mitsunari6-147/+16
*policy.hpp No affect to Window Manager decision, so remove it. *config.hpp, config.cpp Small function to hold the path information to config file, but no need to hold until the death of process. So move it to stack variable, then remove files. Change-Id: I6c210acc586c7cc048e0b158df5e3a511f927b9d Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-06-25Clean: remove useless headersKazumasa Mitsunari9-52/+9
* Shorten build time * Remove unnecessary dependencies Change-Id: I960b2a21124cabc62ef73436fb5a7ab5191c4e0d Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-06-25Fix Client Context of afb-binderKazumasa Mitsunari1-8/+10
* Rename wmClientCtxt to WMClientCtxt * Hold application name and requested role Change-Id: I7d600c66bd905b4847d34049b81aa361dd4fb528 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-05-31Format source codesKazumasa Mitsunari17-2459/+2901
* Format source codes * Change indent spaces to 4 from 3 * Remove trailing spaces in config.xml Change-Id: I745ba6c7cc4dcf4177add81666351c3c01de7d44 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-03-19Change reply timingKazumasa Mitsunari3-49/+59
Some events were emitted in a function before it replies. This patch changes * The function checks parameter then reply error if it is incorrect. * After checking parameters, the function continues to process. The exeption is the syncronous functions such as requestSurface. Change-Id: I168eba3e2b70d53615a4221bcbbba6bc6096c1db Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-03-19Send visible event after commit changeKazumasa Mitsunari1-1/+1
Visible event was emitted before commit change of ivi-controller. This patch changes the event emitted after commit change. Bug-AGL: SPEC-1332 Change-Id: Ib8a6d3a513c1fe4a28111b2ad256122289fc5cc0 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-03-09Enable fallback, then display applicationsflounder_5.99.1flounder/5.99.15.99.1Kazumasa Mitsunari1-3/+16
This patch enables the app to show if it is not registered in layers.json. The original installed app was not shown because the role of app is not registered in WM as default. [Patch set2] Add the same process into requestSurface for RunXDG Bug-AGL : SPEC-1331 Change-Id: Ie99b971023a95a1924795b1ffc7311a630940b1d Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2018-02-09Add APIs which can get information about the display and the surface areaYuta Doi5-21/+222
getDisplayInfo() can get the display information as follows: - width[pixel] - height[pixel] - width[mm] - height[mm] NOTE: It uses wl_output::geometry() for getting physical width[mm] and height[mm] of the display, but the value is different with measured value. value from wl_output::geometry(): width:320 height:520 measured value : width:193 height:343 getAreaInfo() can get the information of area drawn by the application as follows: - x-coordinate - y-coordinate - width - height The details are described in doc/ApplicationGuide.md. Bug-AGL: SPEC-1087 Change-Id: I9e6d64ff04e0845b83c69db374d06af17a6d6b66 Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2018-01-24Change the protocol from ivi-controller to ivi-wmYuta Doi10-878/+724
This patch is for master branch only. For using wayland-ivi-extension version 2.x, the wayland protocol in WindowManager is changed from ivi-controller to ivi-wm. NOTE: If using this patch, the modification for AGL/meta-agl which described in SPEC-1244 is necessary. Bug-AGL: SPEC-1244 Change-Id: I5489db202dfeec8f4626aee53bd1f86c145b95d9 Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2018-01-11Fix screen flickerKazumasa Mitsunari1-2/+0
If the app is on background layer for CES hack such like Navigation, when the user push "Home" shortcut botton quickly many times, the app on background layer appears with flickering. So fix the issue. Bug-AGL: SPEC-1247 Change-Id: I777607a99914f0141886e817cb6a5e486f1105f0 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2017-12-27Merge "Fix build error in gcc 7.2"Jan-Simon Moeller1-1/+0
2017-12-25Enable an application re-launchKazumasa Mitsunari2-1/+56
When an application dies after requestSurface, the application can't be launched because Window Manager doesn't know the application is dead and doesn't clean up its database. In other case, when Mixer app dies due to pulse audio crash just before Window Manager handles surface memory, the connection between weston and Window Manager is dead. So add following * Add context setting with window manager clients. Terminate the context and clean up WM database if a client application is dead. * Add layout_commit() after add surfaces to layer. [PatchSet 2] * Add layout_commit() after add surfaces to layer in api_request_surface Bug-AGL: SPEC-1086 Change-Id: I6ecae2606ac644e49a3383ba849390f8c235f187 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2017-12-22Fix build error in gcc 7.2Changhyeok Bae1-1/+0
error "Never include <bits/signum.h> directly; use <signal.h> instead." Bug-AGL: SPEC-1181 Signed-off-by: Changhyeok Bae <changhyeok.bae@gmail.com>
2017-12-22Enable to show Video and WebBrowserTadao Tanikawa1-0/+2
Adding new applications (Video player and Web browser) to be managed by window manager properly. Releated introducing Video player, old name, 'MediaPlayer' for apps/mediaplayer has been renamed 'Music'. Old name,'MediaPlayer' keeps alive in layers.json for backward compatibility. Change-Id: I2b5e267f4015a4ed128ff5b55ba709faf1914b61 Signed-off-by: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
2017-12-21Clean up source codeKazumasa Mitsunari6-271/+87
To reduce the files and redundant code, * Remove afb_binding_api.* files and generate-binding-glue.py. * Merge them into other source codes. Change-Id: Ib61350ee6a42d73efc3fa29fa0c4868145a88e2e Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2017-12-19Remove automatic code generationKazumasa Mitsunari3-10/+422
To handle the request from binder(applications) more flexibly, we have to remove automatic code generation. Change-Id: Id14ab749cca68b5aa30376ba3ac543372df87233 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2017-12-19Exclude execusion bitKazumasa Mitsunari1-0/+0
Change-Id: I8eee96305be1c8808442af92b254fce857e3dfd6 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2017-12-14Add background layer for CES DEMOYuta Doi2-1/+60
MediaPlayer and Radio can not sound when their surface have visibility=0. And Navigation can not be displayed correctly when the application is switched from visibility=0 to 1. Because when visibility=0, weston event can not be catched. So when the applications is not displayed, they have visibility=1 and are moved to background layer. Change-Id: Idf236e703a1e74cf564a1b213e6e15fcfa42a29e Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2017-12-12Support XDG applicationTadao Tanikawa3-0/+49
To run XDG application on AGL HomeScreen/WindowManager, a new binding API of WindowManager is added. This api is used only by AGL XDG-Launcher and all xdg applications should be packed as wgt compatible to AGL Application framework. Bug-AGL: SPEC-1096 Change-Id: I33dd3b056c736ef374e2251e818541ddd699877b Signed-off-by: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
2017-12-11Revert "Add APIs which can get information of display and area"Tadao Tanikawa6-150/+14
This reverts commit 6aaba1066fe89f324d4bae67497f4035fe997d5f. To fix double posts to Gerrit Review and repository directly. Signed-off-by: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
2017-12-11Add APIs which can get information of display and areaYuta Doi6-14/+150
getDisplayInfo() can get the display information as follows: - width[pixel] - height[pixel] - width[mm] - height[mm] NOTE: It uses wl_output::geometry() for getting physical width[mm] and height[mm] of the display, but the value is different with measured value. value from wl_output::geometry(): width:320 height:520 measured value : width:193 height:343 getAreaInfo() can get the information of area drawn by the application as follows: - x-coordinate - y-coordinate - width - height The details are described in doc/ApplicationGuide.md. Change-Id: I41eec6251527862ef25d1b84cd37d736d3f9c8aa Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2017-11-25Fix the flipped screen problemeel_4.99.3eel/4.99.34.99.3Kazumasa Mitsunari1-2/+4
If transform=flipped-270 is set within weston.ini, the video output is incorrect. Fix the problem. Bug-AGL: SPEC-1115 Change-Id: Idc7117b4b8011e17e888d2237665b485b6ae5621 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2017-11-10Remove and replace the commentsYuta Doi9-148/+71
Remove the unnecessary comments and replace ascii-art comments with doxygen format. Change-Id: Id1abf56db58070a83f403a1f8280bc9888e7de09 Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2017-11-10Add the fail-safe process for the configuration fileYuta Doi2-3/+50
If the configuration file "layers.json" can not be opened, windowmanager uses a default layer configuration. Change-Id: I1b20f385c5e748a90be5e930a1775a6b3a4f39a5 Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2017-11-09Fix the error log on windowmanager initializationYuta Doi1-1/+1
Fix the bug which is that windowmanager outputs the error log on the initialization. Bug-AGL: SPEC-925 Change-Id: I87b20cc7840ef7241ca56ecab440f52333b1753c Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2017-11-01Fix copyright to TOYOTAeel_4.99.2eel/4.99.24.99.2Kazumasa Mitsunari20-20/+20
Change-Id: I8ac0463a8efa215477593a96a45f08e38dc46e36 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2017-11-01Change namespace name to generic nameKazumasa Mitsunari8-53/+46
The name of namespace "genivi" was used. This is not generic, so changed it to "compositor". Conflicts: src/app.cpp Change-Id: Ie088e5d404e1981f7bc149abbc20e900bea8ec2d Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2017-11-01Layer configuration file is included in widgetYuta Doi2-1/+11
Layer configuration file (layers.json) is placed in target when installation of windowmanager. Bug-AGL: SPEC-991 Change-Id: Ia614ec400c185ec7db4379c66321363a68e5e0da Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2017-11-01Modify the waiting loop of the ivi configuration listenerYuta Doi5-11/+79
When layout is NOT normal, wait for the listener. Change-Id: Iedbb5de7a997c82613a0e1947d91ee2527f28436 Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2017-11-01Add debug message macros controlled by environment variableYuta Doi7-93/+100
Add a HMI_DEBUG macro to print debug messages. It is controlled by the USE_HMI_DEBUG environment variable. Change-Id: I3bc5bf2f3b0e9f5ee06f340053f29ad36e7d9dbb Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
2017-11-01Modify event notification from broadcast to subscribe modelKazumasa Mitsunari3-16/+45
The event notification was implemented using a broadcast model, change it to a subscription model. Bug-AGL: SPEC-987 Change-Id: I344a3a73320eb81c3f670736b032f07400bb8f64 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2017-11-01Removed redraw_fixer.cppKazumasa Mitsunari1-128/+0
This is not needed anymore This was used for testing Change-Id: I0e1621db8a81d5eef3b91af126f748dacfc93ea7 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2017-11-01Add drawing_area parameter to APIKazumasa Mitsunari4-55/+74
Add drawing_area parameter in activateSurface API and syncDraw event. This is needed for the following feature - To request writting area - To inform application of writting area I assume that "normal.full" is a full size area in application area, and "split.[main|sub]" is an upper/lower half size area in application area. For example, when Navigation app receives syncDraw event which the label is Navigation, and the area name is "normal.full", it means Navigation will be displayed as a full size(in application area). When Navigation app receives syncDraw event which the label is same, and the area name is "split.main", it means Navigation will be displayed as an upper half size(in application area). Application must return endDraw after changing its design according to the size, when the application receives syncDraw event. Layout is defined in layers.json file. Current layout is set to full screen. Bug-AGL: SPEC-987 Change-Id: I5efed3dda88275e18dc1d951b98bdfcfc79ee46b Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
2017-10-26Change the sequence how signals are emittedKazumasa Mitsunari1-1/+1
According to https://wiki.automotivelinux.org/_media/agl-hmi-fw_windowmanager_spec_v0.1.0.pdf, the visible event is emitted first Bug-AGL : SPEC-987 Change-Id: I5b5fa669b31b9a5283ccc91702064207a85d838c Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>