47 TRACER("CGlxHdmiController::~CGlxHdmiController()"); |
47 TRACER("CGlxHdmiController::~CGlxHdmiController()"); |
48 DestroySurfaceUpdater(); |
48 DestroySurfaceUpdater(); |
49 DestroyContainer(); |
49 DestroyContainer(); |
50 delete iStoredImagePath; |
50 delete iStoredImagePath; |
51 iStoredImagePath = NULL; |
51 iStoredImagePath = NULL; |
|
52 if (iFsBitmap) |
|
53 { |
|
54 delete iFsBitmap; |
|
55 iFsBitmap = NULL; |
|
56 } |
52 if(iGlxTvOut) |
57 if(iGlxTvOut) |
53 { |
58 { |
54 delete iGlxTvOut; |
59 delete iGlxTvOut; |
55 } |
60 } |
56 } |
61 } |
57 |
62 |
58 // ----------------------------------------------------------------------------- |
63 // ----------------------------------------------------------------------------- |
59 // Setting an Image Path |
64 // Setting an Image Path |
60 // ----------------------------------------------------------------------------- |
65 // ----------------------------------------------------------------------------- |
61 EXPORT_C void CGlxHdmiController::SetImageL(const TDesC& aImageFile, |
66 EXPORT_C void CGlxHdmiController::SetImageL(const TDesC& aImageFile, CFbsBitmap* aFsBitmap, |
62 TBool aStore) |
67 TBool aStore) |
63 { |
68 { |
64 TRACER("CGlxHdmiController::SetImageL()"); |
69 TRACER("CGlxHdmiController::SetImageL()"); |
65 if (aStore) |
70 if (aStore) |
66 { |
71 { |
67 iIsImageSupported = ETrue; |
72 iIsImageSupported = ETrue; |
68 StoreImageInfoL(aImageFile); |
73 StoreImageInfoL( aImageFile, aFsBitmap ); |
69 } |
74 } |
70 if (iGlxTvOut->IsHDMIConnected()) |
75 if (iGlxTvOut->IsHDMIConnected()) |
71 { |
76 { |
72 iIsPostingMode = ETrue; |
|
73 GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 2"); |
77 GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 2"); |
74 // do not close the surface , use the same surface instead. |
78 // do not close the surface , use the same surface instead. |
75 // Call a function to pass imagefile |
79 // Call a function to pass imagefile |
76 if (!iHdmiContainer) |
80 if (!iHdmiContainer) |
77 { |
81 { |
134 // ShiftToCloningMode |
138 // ShiftToCloningMode |
135 // ----------------------------------------------------------------------------- |
139 // ----------------------------------------------------------------------------- |
136 EXPORT_C void CGlxHdmiController::ShiftToCloningMode() |
140 EXPORT_C void CGlxHdmiController::ShiftToCloningMode() |
137 { |
141 { |
138 TRACER("CGlxHdmiController::ShiftToCloningMode()"); |
142 TRACER("CGlxHdmiController::ShiftToCloningMode()"); |
139 iIsPostingMode = EFalse; |
|
140 if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater) |
143 if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater) |
141 { |
144 { |
142 iSurfaceUpdater->ShiftToCloningMode(); |
145 iSurfaceUpdater->ShiftToCloningMode(); |
143 } |
146 } |
144 } |
147 } |
147 // ShiftToPostingMode |
150 // ShiftToPostingMode |
148 // ----------------------------------------------------------------------------- |
151 // ----------------------------------------------------------------------------- |
149 EXPORT_C void CGlxHdmiController::ShiftToPostingMode() |
152 EXPORT_C void CGlxHdmiController::ShiftToPostingMode() |
150 { |
153 { |
151 TRACER("CGlxHdmiController::ShiftToPostingMode()"); |
154 TRACER("CGlxHdmiController::ShiftToPostingMode()"); |
152 iIsPostingMode = ETrue; |
|
153 if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater) |
155 if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater) |
154 { |
156 { |
155 iSurfaceUpdater->ShiftToPostingMode(); |
157 iSurfaceUpdater->ShiftToPostingMode(); |
156 } |
158 } |
157 } |
159 } |
158 |
160 |
159 // ----------------------------------------------------------------------------- |
161 // ----------------------------------------------------------------------------- |
160 // Constructor |
162 // Constructor |
161 // ----------------------------------------------------------------------------- |
163 // ----------------------------------------------------------------------------- |
162 CGlxHdmiController::CGlxHdmiController(): |
164 CGlxHdmiController::CGlxHdmiController(): |
163 iIsPostingMode(EFalse) |
165 iFsBitmap(NULL) |
164 { |
166 { |
165 TRACER("CGlxHdmiController::CGlxHdmiController()"); |
167 TRACER("CGlxHdmiController::CGlxHdmiController()"); |
166 // Implement nothing here |
168 // Implement nothing here |
167 } |
169 } |
168 |
170 |
218 // ----------------------------------------------------------------------------- |
220 // ----------------------------------------------------------------------------- |
219 void CGlxHdmiController::CreateSurfaceUpdaterL(const TDesC& aImageFile) |
221 void CGlxHdmiController::CreateSurfaceUpdaterL(const TDesC& aImageFile) |
220 { |
222 { |
221 TRACER("CGlxHdmiController::CreateSurfaceUpdater()"); |
223 TRACER("CGlxHdmiController::CreateSurfaceUpdater()"); |
222 RWindow* window = iHdmiContainer->GetWindow(); |
224 RWindow* window = iHdmiContainer->GetWindow(); |
223 iSurfaceUpdater = CGlxHdmiSurfaceUpdater::NewL(window, aImageFile, |
225 iSurfaceUpdater = CGlxHdmiSurfaceUpdater::NewL(window, aImageFile, iFsBitmap, |
224 iHdmiContainer); |
226 iHdmiContainer); |
225 iHdmiContainer->DrawNow(); |
227 iHdmiContainer->DrawNow(); |
226 } |
228 } |
227 |
229 |
228 // ----------------------------------------------------------------------------- |
230 // ----------------------------------------------------------------------------- |
229 // StoreImageInfoL |
231 // StoreImageInfoL |
230 // ----------------------------------------------------------------------------- |
232 // ----------------------------------------------------------------------------- |
231 void CGlxHdmiController::StoreImageInfoL(const TDesC& aImageFile) |
233 void CGlxHdmiController::StoreImageInfoL(const TDesC& aImageFile, CFbsBitmap* aFsBitmap) |
232 { |
234 { |
233 TRACER("CGlxHdmiController::StoreImageInfoL()"); |
235 TRACER("CGlxHdmiController::StoreImageInfoL()"); |
234 if(iStoredImagePath) |
236 if(iStoredImagePath) |
235 { |
237 { |
236 delete iStoredImagePath; |
238 delete iStoredImagePath; |
237 iStoredImagePath = NULL; |
239 iStoredImagePath = NULL; |
238 } |
240 } |
|
241 if (iFsBitmap) |
|
242 { |
|
243 delete iFsBitmap; |
|
244 iFsBitmap = NULL; |
|
245 } |
239 iStoredImagePath = aImageFile.AllocL(); |
246 iStoredImagePath = aImageFile.AllocL(); |
|
247 iFsBitmap = new (ELeave) CFbsBitmap; |
|
248 iFsBitmap->Duplicate(aFsBitmap->Handle()); |
240 } |
249 } |
241 |
250 |
242 // ----------------------------------------------------------------------------- |
251 // ----------------------------------------------------------------------------- |
243 // HandleTvStatusChangedL |
252 // HandleTvStatusChangedL |
244 // ----------------------------------------------------------------------------- |
253 // ----------------------------------------------------------------------------- |
245 void CGlxHdmiController::HandleTvStatusChangedL( TTvChangeType aChangeType ) |
254 void CGlxHdmiController::HandleTvStatusChangedL( TTvChangeType aChangeType ) |
246 { |
255 { |
247 TRACER("CGlxHdmiController::HandleTvStatusChangedL()"); |
256 TRACER("CGlxHdmiController::HandleTvStatusChangedL()"); |
248 if ( aChangeType == ETvConnectionChanged ) |
257 if ( aChangeType == ETvConnectionChanged ) |
249 { |
258 { |
250 if ( iGlxTvOut->IsHDMIConnected() && iIsImageSupported && iIsPostingMode) |
259 if ( iGlxTvOut->IsHDMIConnected() && iIsImageSupported ) |
251 { |
260 { |
252 GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Connected"); |
261 GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Connected"); |
253 // Calling SetImageL() with appropriate parameters |
262 // Calling SetImageL() with appropriate parameters |
254 SetImageL(iStoredImagePath->Des(), EFalse); |
263 SetImageL(iStoredImagePath->Des(), iFsBitmap, EFalse); |
255 } |
264 } |
256 else |
265 else |
257 { |
266 { |
|
267 GLX_LOG_INFO2("CGlxHdmiController::HandleTvStatusChangedL() iIsImageSupported=%d, iGlxTvOut->IsHDMIConnected()=%d", |
|
268 iIsImageSupported,iGlxTvOut->IsHDMIConnected()); |
258 // if it gets disconnected, destroy the surface |
269 // if it gets disconnected, destroy the surface |
259 GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Not Connected"); |
270 GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Not Connected"); |
260 DestroySurfaceUpdater(); |
271 DestroySurfaceUpdater(); |
261 } |
272 } |
262 } |
273 } |