2 * Copyright © 2020 Samsung Electronics co., Ltd. All Rights Reserved.
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21 * DEALINGS IN THE SOFTWARE.
24 #include "DSWaylandTizenPolicyExt.h"
25 #include "DSWaylandTizenPolicyExtPrivate.h"
27 namespace display_server
30 /* DSWaylandTizenPolicyExt */
31 DSWaylandTizenPolicyExtPrivate::DSWaylandTizenPolicyExtPrivate(DSWaylandTizenPolicyExt *p_ptr, DSWaylandCompositor *compositor)
32 : DSObjectPrivate(p_ptr),
39 init(compositor->display(), 3);
42 DSWaylandTizenPolicyExtPrivate::~DSWaylandTizenPolicyExtPrivate()
46 void DSWaylandTizenPolicyExtPrivate::tizen_policy_ext_bind_resource(Resource *resource)
50 void DSWaylandTizenPolicyExtPrivate::tizen_policy_ext_destroy_resource(Resource *resource)
54 void DSWaylandTizenPolicyExtPrivate::tizen_policy_ext_get_rotation(Resource *resource, uint32_t id, struct ::wl_resource *surface)
56 DSWaylandTizenRotation *tizenRotation = nullptr;
58 for (DSWaylandTizenRotation *temp : __rotationList)
59 if (temp->getRotationSurface() == surface) return;
61 tizenRotation = new DSWaylandTizenRotation(resource->client(), id, surface);
62 if (tizenRotation == nullptr)
64 DSLOG_ERR("DSWaylandTizenPolicyExt", "fail get tizen resource");
68 __rotationList.push_back(tizenRotation);
71 DSWaylandTizenRotation *DSWaylandTizenPolicyExtPrivate::getTizenRotation(struct ::wl_resource *surface)
73 DSWaylandTizenRotation *tizenRotation = nullptr;
75 for (DSWaylandTizenRotation *temp : __rotationList)
77 if (temp->getRotationSurface() == surface)
87 void DSWaylandTizenPolicyExtPrivate::delTizenRotation(DSWaylandTizenRotation *tizenRotation)
89 __rotationList.remove(tizenRotation);
92 DSWaylandTizenPolicyExt::DSWaylandTizenPolicyExt(DSWaylandCompositor *compositor)
93 : _d_ptr(std::make_unique<DSWaylandTizenPolicyExtPrivate>(this, compositor))
97 DSWaylandTizenPolicyExt::~DSWaylandTizenPolicyExt()
101 DSWaylandTizenRotation *DSWaylandTizenPolicyExt::getTizenRotation(struct ::wl_resource *surface)
103 DS_GET_PRIV(DSWaylandTizenPolicyExt);
105 return priv->getTizenRotation(surface);
108 void DSWaylandTizenPolicyExt::delTizenRotation(DSWaylandTizenRotation *tizenRotation)
110 DS_GET_PRIV(DSWaylandTizenPolicyExt);
112 priv->delTizenRotation(tizenRotation);
115 /* DSWaylandTizenRotation */
116 DSWaylandTizenRotationPrivate::DSWaylandTizenRotationPrivate(DSWaylandTizenRotation *p_ptr, struct ::wl_client *client, uint32_t id, struct ::wl_resource *surface)
117 : DSObjectPrivate(p_ptr),
125 DSWaylandTizenRotationPrivate::~DSWaylandTizenRotationPrivate()
129 void DSWaylandTizenRotationPrivate::tizen_rotation_bind_resource(Resource *resource)
133 void DSWaylandTizenRotationPrivate::tizen_rotation_destroy_resource(Resource *resource)
137 void DSWaylandTizenRotationPrivate::tizen_rotation_destroy(Resource *resource)
141 struct ::wl_resource *DSWaylandTizenRotationPrivate::getRotationSurface(void)
146 DSWaylandTizenRotation::DSWaylandTizenRotation(struct ::wl_client *client, uint32_t id, struct ::wl_resource *surface)
147 : _d_ptr(std::make_unique<DSWaylandTizenRotationPrivate>(this, client, id, surface))
151 DSWaylandTizenRotation::~DSWaylandTizenRotation()
155 struct ::wl_resource *DSWaylandTizenRotation::getRotationSurface(void)
157 DS_GET_PRIV(DSWaylandTizenRotation);
159 return priv->getRotationSurface();
162 } // namespace display_server