Support window rotation
[platform/core/uifw/dali-adaptor.git] / adaptors / common / gl / egl-factory.cpp
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 // CLASS HEADER
19 #include "egl-factory.h"
20
21 // INTERNAL INCLUDES
22 #include <gl/egl-implementation.h>
23 #include <gl/egl-image-extensions.h>
24 #include <gl/egl-sync-implementation.h>
25
26 namespace Dali
27 {
28 namespace Internal
29 {
30 namespace Adaptor
31 {
32
33 EglFactory::EglFactory()
34 : mEglImplementation(NULL),
35   mEglImageExtensions(NULL),
36   mEglSync(new EglSyncImplementation) // Created early, as needed by Core constructor
37 {
38 }
39
40 EglFactory::~EglFactory()
41 {
42   // Ensure the EGL implementation is destroyed
43   delete mEglImageExtensions;
44   delete mEglImplementation;
45   delete mEglSync;
46 }
47
48 EglInterface* EglFactory::Create()
49 {
50   // Created by RenderThread (After Core construction)
51   mEglImplementation = new EglImplementation();
52   mEglImageExtensions = new EglImageExtensions(mEglImplementation);
53
54   mEglSync->Initialize(mEglImplementation); // The sync impl needs the EglDisplay
55   return mEglImplementation;
56 }
57
58 void EglFactory::Destroy()
59 {
60   delete mEglImageExtensions;
61   mEglImageExtensions = NULL;
62   delete mEglImplementation;
63   mEglImplementation = NULL;
64 }
65
66 EglInterface* EglFactory::GetImplementation()
67 {
68   return mEglImplementation;
69 }
70
71 EglImageExtensions* EglFactory::GetImageExtensions()
72 {
73   return mEglImageExtensions;
74 }
75
76 EglSyncImplementation* EglFactory::GetSyncImplementation()
77 {
78   return mEglSync;
79 }
80
81 } // Adaptor
82 } // Internal
83 } // Dali