The tizen_surface provides tizen-specific functionalities for the given surface. Create a tizen_resource interface for the given surface. Destroy this tizen_surface object. This tizen_resource provides a global resource id. It is a unique id which is provided by the display server. Destroy this tizen_resource object. The resource_id event is sent immediately upon the tizen_resource object creation by the display server. The id is a unique id which is generated by the display server. The tizen_policy provides tizen-specific requests and events for window management at Tizen Platform. [TODO] Explain the window layer at the display server. Need to explain the window layer to understand the requests and the events at tizen_policy interface. Create a visibility interface for the given surface. Create a position interface for the given surface. [TODO]: need to explain the relationship with zxdg_positioner_v6 Activate the given surface. A client requests this when a client wants to raise at the top of the windows stack in the window's layer at the display server and also wants to get a keyboard focus from the display server. However the display server does not always set the focus on the reqested surface. It depends on the focus policy of the display server. A client just demands a keyboard focus via this request. Activate the surface associated with the given res_id and position it below the surface associated with the below_res_id. A client uses this reuquest when it want to change the order of the window stack with the gloal resource ids which are the surfaces belonging to different processes. However, this requestit does not work when the surface associated with the below_res_id is a parent of the surface assicated with the res_id. This request raises the given surface to the top of the window stack in a window layer. A client can decide the window layer with the window_type for the given surface through the set_type request of tizen_policy interface. The surface positions at the top in the window layer. This request lowers the given surface to the bottom of the window stack in a window layer. The surface positions at the bottom in the window layer. This request lowers the surface associated with the given res_id to the bottom of the window stack in a window layer. The surface positions at the bottom in the window layer. This request makes the given surface unable to be the focused surface. The display server must not give the focus to the surface. This request makes the given surface enable to be the focused surface. Give the role to the given surface. A client set the tizen-specific role of the surface except for the role of xdg_surface interface, xdg_top_level, xdg_popup and so on. A client can set the window type through the set_type request with win_type values. The value gives the surface the window_state, the z-order at the window stack in the window layer and other types in the display server. The following values are window types with z-order values in descending order. Those are notification, dnd, dock, splash, fullscreen, toplevel or maximized and desktop. The menu, dnd, notification, utility, dialog, dock, splash and desktop are the window type which is defined in netwm spefification. https://specifications.freedesktop.org/wm-spec/wm-spec-1.4.html#idm46148902270160 Set the type of the given surface. The display server use the window type for the policy of the window management which are focus management, visibility management, stack management and so on. Set the conformant surface. The conformant surface can get the event through which the display server notifies the area covered by the compormant_part that is the surface in another client. Unset the conformant surface. Ask if the given surface is the conformant surface or not. The display server sents the result via the confirmant event. Notify the client when a client sends the get_conformant request. This value indicates the surface name at Tizen Platform. Notify a client when the conformant area is caclulated by the another surface as the conformnat_part. This event does NOT guarantee the perfect composition of the conformant surface and the surface of the conformant part. This describes the state of error. This is the level of the notification type. This level stands for the z-order in the notification layer at the display server. The none, 1, 2, 3, default, medium, high and top is z-order in ascending order. The lower number value means the lower z-order. This request sets the level in the notification layer. The display server decides the z-order with the given level in the notification layer. Notify a client when the surface is located in the z-order which has been reuqested via the set_notification_level request. This request sets the transient parent for the surface associated with the parent_id. The surface associated with the given child_id becomes a transient children for the surface associated with the parent_id. This reuqest unsets the transient parent on the surface associated with the child_id. Notify a client when the surface associated with the child_id is to set the transient parent or when it is to unset the transient parent. This value means how the screen is to operate. A client sets the screen mode which it wants the screen to be as long as the given surface is shown on the screen. Notify a client when the screen_mode from the client's request activates in the display server. This request places the surface of the subsurface below its' parent surface. This request makes the surface associated with the given subsurface not follow the policy of the window managment triggered by the parent surface. The window policy of the surface associated with the given subsurface is not affected by its parent surface. Get the subsurface of the given surface with the global resource parent_id. Set the opaque state to the given surface. The display server makes this surface be opaque even if the color depth of the buffer attached to the surface is 32 depth. Set the iconified state to the given surface. The iconfied state is the window state in which the surface is not showing on the screen. Set the uniconified state to the given surface. The uniconfied state is the window state in which the iconified surface is showing on the screen. Notify a client when the iconfied state of the surface is changed. The iconfied state is not only changed when the client requets the iconify and uniconify but also changed when the iconfied state is decided by the display server. Add the information of the auxiliary hint to the given surface. The name and the value are changed when the display server already has the same id with which the client sends this request. Change the value of the auxiliary hint id which the surface has. Delete the information of the auxiliary hint associated the hint id which the given surface has. Get the ids of the aux hints which the given surface supports. The display server send the supported_aux_hints events as the reply of this requrest. Notify a client when the display server get the get_supported_aux_hints request. The display server send the id array of the suxiliary hints which the surface supports. Notify a client when the auxiliary hint which the given surface has is added and changed. Notify a client when the display server sends the auxiliary message. The display server can use this event when it notifies an additional information to the client. Set the all surfaces associated with the given pid to be the background state. The surfaces set to be the hide state and cannot show on a screen even if the client send the show request and the activate request. Set the all surfaces associated with the given pid not to be the background state. The sufaces can allow to be showed and to be activated by the client's request. Set the floating mode to the given surface. The surface which sets to be floating mode can be a partial window and can position over other top-level windows. Unset the floating mode to the given surface. The geometry of the surface does not change and the z-order of it can be the same as the top-level windows. The set_stack_mode request uses this mode values. Set the stack mode to the given surface. The surface can changes the z-order in the same layer by the stack mode. Activate the surface associated with the given res_id which is the global resource id and set to position over the surface assoicated with the above_res_id. Get the subsurface watcher associated with the given surface. A client can get the information about the subsurface associated with the surface. Set the parent/client relationship. The child surface position over the parent surface. The server can notify of conformant region(area) using this event. If client is received this event, client should ack for it using tizen_policy@ack_conformant_region request. A client can refresh its surface for applying new conformant region which is from tizen_policy@conformant_region event. The client has to ack after complete of its updates by this request. Destroy this tizen_policy object. A cleint sends the information that it has the tizen_video_object to the display server. Set the application id associated with the given pid. Notify showing the given surface. This request means that a client is going to attach the buffer to the given surface. There is nothing to do at the display server when a client sends this request. Notify hiding the given surface. This request means that a client is going to attach the null buffer to the given surface. There is nothing to do at the display server when a client sends this request. This makes a relationship between parent and child. A child is always placed under a parent. This makes a relationship between parent and child. A child is always placed under a parent. Setting a null parent for a child window removes any parent-child relationship for the child. This event is sent when the display server finishes interactive moving the window. The changed geometry of the window is sent together. This event is sent when the display server finishes interactive resizing the window. The changed geometry of the window is sent together. These values are used by the set_maximize_direction as the paremater. Set the maximize direction of the surface. Set the pin mode of the surface. Unset the pin mode of the surface. Set the layout of the surface with the coordinates passed. Set the modal state of the surface. Unset the modal state of the surface. A client wants to know the visiblity information of the surface. Destroy this tizen_visiblity object. These are the visibilty types which tells how the surface assoicated with the tizen_visibility resource is showing on a screen or not. Notify a client when the visibility of the surface is changed. Notify a client when the visibility of the surface is changed with the extra vaule. A client can set the position information of the surface. Destroy this tizen_position object. Set the position. Notify a client when the posion is changed. Destroy the tizen_gesture. In tradition, all the keys in a keyboard and a device on which some keys are attached will be sent to focus surface by default. Currently it's possible to set up each focus for each key in a keyboard and a device. Therefore, by setting a key grab for a surface, the owner of the surface will get the key event when it has the key grab for the key. This value is used to set a mode for a key grab. With this mode and the order of the surface between surfaces' stack, the compositor will determine the destination client surface. This value is used to set a mode for a window. With this mode and the order of the surface between surfaces' stack, the compositor will determine the destination client surface. Destroy the tizen_keyrouter. Clients can get a screenmirror object from this interface. Before using screenmirror, a client should get a screenmirror object from display server. Client can set auto rotation value for one shot. The tbm format codes match the #defines in tbm_surface.h. The formats actually supported by the compositor will be reported by the format event. Clients can get notification of screenshooter. Destroy the tizen_screenshooter. A client can use this interface to get stream images of screen. Before starting, queue all buffers. Then, start a screenmirror. After starting, a dequeued event will occur when drawing a captured image on a buffer is finished. You might need to queue the dequeued buffer again to get a new image from display server. A user can dequeue a buffer from display server when he wants to take back it from server. occurs when drawing a captured image on a buffer is finished occurs when the content of a captured image is changed. (normal or video) occurs when the screenmirror is stopped eventually Client can set auto rotation value for screenmirror. Clients can get the video information that the compositor can handle from this interface. The tbm format codes match the #defines in tbm_surface.h. The formats actually supported by the compositor will be reported by the format event. Destroy the tizen_video. If tizen_video_object.follow_topmost_visibility is applied to a video_object, It will be video mute control based on topmost visibility. If tizen_video_object.unfollow_topmost_visibility is applied to a video_object, It will not be video mute control based on topmost visibility. If tizen_video_object.allowed_attribute is applied to a video_object, set_attribute request will be deliever to tdm backend directly. If tizen_video_object.disallowed_attribute is applied to a video_object, It would be tdm_attribute call when topmost showing. Destroy the tizen_subsurface_watcher. This is the alternative and convenient solution of wl_viewport to present a surface on screen. The below five functions can be replaced with this interface. The below functions will be ignored after applying this interface to a surface. - wl_surface.set_buffer_transform - wl_surface.set_buffer_scale - wl_subsurface.set_position - wl_viewport.set_source - wl_viewport.set_destination wl_viewport.set_source is very complicated especially when the buffer of wl_surface is transformed by wl_surface.set_buffer_transform. And when the parent is resized, if we want to change the geometry of a subsurface also, wl_subsurface.set_position and wl_viewport.set_destination should be called everytime the parent is resized in client side. This makes difficult to synchronize a parent surface and a subsurface on screen. tizen_viewport allows clients to set the relative geometry to a subsurface in a parent surface. Whenever a parent surface is resized, the geometry of a subsurface will be calculated, moved and resized automatically by a compositor. The tizen_viewport is specified in the coordinates of a subsurface's parent. If tizen_viewport is applied to a shell surface(toplevel), the all value related with x, y pos of tizen_viewport and tizen_destination_mode interface will be ignored. The below 3 functions don't consider the transform of a parent's surface. - tizen_viewport.set_source - tizen_viewport.set_destination - tizen_viewport.set_destination_ratio Furthermore, tizen_destination_mode.follow_parent_transform is called, tizen_viewport will consider the transform of a parent surface when applying the destination mode to a subsurface. If tizen_destination_mode.follow_parent_transform is applied to a shell surface, it will be ignored. The destination will be cropped by a parent surface. The change will be applied when wl_surface.commit is called. The accepted values for the transform parameter are the values for wl_output.transform according to the output transform. The tizen_viewport.set_transform is applied only to itself. Basically it doesn't effect the transform of its subsurfaces. That is, if 90 transform is setted and its subsurface still has 0 transform, its subsurface won't be rotated. If needed to rotate the subsurface depended on a parent surface, tizen_destination_mode.follow_parent_transform will make it possible. The source rectangle won't be changed when a parent is resized. If it needs to be changed, tizen_viewport.set_source should be called with new values. The destination geometry won't be changed when a parent is resized. If it needs to be changed, tizen_viewport.set_destination should be called with new values. If tizen_viewport is applied to a shell surface(toplevel), the x, y value of tizen_viewport.set_destination will be ignored. The destination rectangle of a subsurface will be automatically changed when a parent is resized. This allows the real number between 0.0 and 1.0. See wl_fixed_from_double and wl_fixed_to_double. If tizen_viewport is applied to a shell surface(toplevel), the x, y value of tizen_viewport.set_destination_ratio will be ignored. A client can asks the display server to send the size of tizen_viewport object's parent surface. Once a client requests it, the "parent_size" event will be sent whenever the parent surface's size is changed. The real transform of a subsurface is (parent's transform + subsurface's transform). The subsurface will be rotated automatically when the parent is rotated. If tizen_viewport.follow_parent_transform is applied to a shell surface(toplevel), it will be ignored. The destination rectangle will be automatically changed when a parent is resized. When tizen_destination_mode.set is called, the value of tizen_viewport.set_destination and tizen_viewport.set_destination_ratio will be ignored. The destination of a surface is decided by the mode, ratio, scale, offset and align values. The ratio, scale, offset and align will be applied sequentially. The change will be applied when wl_surface.commit is called. The real transform of a subsurface is (parent's transform + subsurface's transform). That is, the subsurface will be rotated automatically when the parent is rotated. If tizen_destination_mode.follow_parent_transform is applied to a shell surface(toplevel), it will be ignored. This allows the real number. See wl_fixed_from_double and wl_fixed_to_double. This allows the real number. See wl_fixed_from_double and wl_fixed_to_double. This allows the real number between 0.0 and 1.0. See wl_fixed_from_double and wl_fixed_to_double. The global obejct. Wayland has 3 type of compositor, embedded compositor is one of them. But tizen application is sendboxing by smack, then a application not allow commutication to other application by socket. So system or session compositor create socket and send to embedded compostior. The get_socket request ask the server to create socket and emit socket event. Sent immediately after get_socket request Tizen input device manager is a global interface. This object has device add/remove events to provide tizen input device object to a client. This allows for a client to get the con Be sure to bind this interface after binding wl_seat interface. Tizen input device manager interface will only provide device add/remove event for devices which belongs to the wl_seat object(s) bound by the client. Therefore, the compositor needs to create/send the device add/remove event only for the current client's seat(s). The device add/remove notification is going to be sent when a physical/logical device is added/removed to/from the given seat. Note that a tizen input device object can be assigned to a wl_seat and can also be assigned to the other wl_seat at any time. Whenever a relationship between a tizen input device object changes, device remove event from the current wl_seat object will be made and device add event to the other wl_seat object will also be mode. The device add/remove notification is going to be sent when a physical/logical device is added/removed to/from the given seat. Note that a tizen input device object can be assigned to a wl_seat and can also be assigned to the other wl_seat at any time. Whenever a relationship between a tizen input device object changes, device remove event from the current wl_seat object will be made and device add event to the other wl_seat object will also be mode. This event will be sent if the duration of existing block is expired. Note that no block expired event will be sent if there is no block for the client. This request allows a client to request to block one or more events for its purpose. By specifying class as an argument in the request, the events belongs to the class will be blocked during the given duration. Note that an error event will be sent if there is any error. This request allows a client to request to release the existing block for the client. Note that no error event will be sent if there is no existing block for the client. Destroy the tizen_input_device_manager. When the server got this request, the server choices generate a event directly or just save values. Pointer axes (such as wheel/hwheel) are delivered to clients independantly about pointer events, but touch axes are delivered to normal touch events(begin/update/end). So the server just save touch axes before generate touch request is came and send a touch event include saved touch axes value. Each touch devices has their own touch counts can be supported. So a server controls maximum touches in this system to maintain resources efficiently. Sometimes a server controls maximum touches using a predefined configuration option. Sometimes a server ensures maximum touches to be supported by touch device. If a server do not use configuration option, maximum touches can be updated when new touch devices are connected. So this events can be sent to client, when a first touch device is added or maximum touches is changed. This request only changes system's touch count. So this request doesn't change already connected touch devices's max count. This will influence to user created device using input generator. Input generator creates touch device only supports default touch count. But if user set touch count before create a Input generator device, user can create touch device has touch count user wanted. But some systems has their own maximum touch count. In that case this request returns error not_allowed. The tizen_input_device interface represents one or more input devices associated with a physical/logical input device. This interface provides device specific information/events to allows for client to identify the source device of an event or to get the additional axes/attributes of a device. Note that a tizen_input_device object can be used for a physical input device and can also be used for a group of input devices. e.g. a group of mouse devices Destroy the tizen_launchscreen. Destroy the tizen_display_policy. This interface provides some requests and events about clipboard for other clients. A wayland client can notify of that the client is data only mode. The data only mode means that this wayland client doesn't have any wl_surfaces at all but it wants to use wl_data_device for some data operations. Destroy the tizen_screen_rotation. Destroy the tizen_renderer Destroy the tizen_renderer_surface