aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCory Fields <foss@atlastechnologiesinc.com>2012-10-17 11:15:14 -0700
committerCory Fields <foss@atlastechnologiesinc.com>2012-10-17 11:15:14 -0700
commitc7951a45443603e3f0ec64ccb779b54ad0a62507 (patch)
tree41be5f688614bac9b804fa0847710612bd7aebb3
parent5103f380b6c433c7f96df31220338358b69a0241 (diff)
parentb6d2be708300b683f12dc972d33ce091e602f542 (diff)
Merge pull request #1634 from theuni/egl-rewrite-headers
Final part of the egl refactor, back-ends control egl includes
-rw-r--r--xbmc/windowing/egl/EGLNativeType.h12
-rw-r--r--xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp21
-rw-r--r--xbmc/windowing/egl/EGLNativeTypeAmlogic.h4
-rw-r--r--xbmc/windowing/egl/EGLNativeTypeAndroid.cpp21
-rw-r--r--xbmc/windowing/egl/EGLNativeTypeAndroid.h4
-rw-r--r--xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp13
-rw-r--r--xbmc/windowing/egl/EGLNativeTypeRaspberryPI.h7
-rw-r--r--xbmc/windowing/egl/EGLWrapper.cpp4
-rw-r--r--xbmc/windowing/egl/EGLWrapper.h1
9 files changed, 56 insertions, 31 deletions
diff --git a/xbmc/windowing/egl/EGLNativeType.h b/xbmc/windowing/egl/EGLNativeType.h
index bd53a30dad..456e81e05c 100644
--- a/xbmc/windowing/egl/EGLNativeType.h
+++ b/xbmc/windowing/egl/EGLNativeType.h
@@ -20,10 +20,12 @@
*
*/
-#include <EGL/egl.h>
#include "guilib/Resolution.h"
#include "EGLQuirks.h"
+typedef void* XBNativeDisplayType;
+typedef void* XBNativeWindowType;
+
/*!
This class provides extra functionality on top of EGL in order to facilitate
the implementation-dependent functionality relating to creating, maintaining,
@@ -99,10 +101,10 @@ public:
virtual bool CreateNativeWindow() = 0;
/*! \brief Returns the current Native Display */
- virtual bool GetNativeDisplay(EGLNativeDisplayType **nativeDisplay) const = 0;
+ virtual bool GetNativeDisplay(XBNativeDisplayType **nativeDisplay) const = 0;
/*! \brief Returns the current Native Window */
- virtual bool GetNativeWindow(EGLNativeWindowType **nativeWindow) const = 0;
+ virtual bool GetNativeWindow(XBNativeWindowType **nativeWindow) const = 0;
/*! \brief Destroy the Native Window
@@ -142,6 +144,6 @@ public:
virtual bool ShowWindow(bool show) = 0;
protected:
- EGLNativeDisplayType m_nativeDisplay;
- EGLNativeWindowType m_nativeWindow;
+ XBNativeDisplayType m_nativeDisplay;
+ XBNativeWindowType m_nativeWindow;
};
diff --git a/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp b/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp
index 19337eaec9..6966c6c872 100644
--- a/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp
+++ b/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp
@@ -17,6 +17,7 @@
* <http://www.gnu.org/licenses/>.
*
*/
+#include <EGL/egl.h>
#include "EGLNativeTypeAmlogic.h"
#include <stdlib.h>
#include <linux/fb.h>
@@ -64,9 +65,13 @@ bool CEGLNativeTypeAmlogic::CreateNativeDisplay()
bool CEGLNativeTypeAmlogic::CreateNativeWindow()
{
#if defined(_FBDEV_WINDOW_H_)
- m_nativeWindow = new fbdev_window;
- m_nativeWindow->width = 1280;
- m_nativeWindow->height = 720;
+ fbdev_window *nativeWindow = new fbdev_window;
+ if (!nativeWindow)
+ return false;
+
+ nativeWindow->width = 1280;
+ nativeWindow->height = 720;
+ m_nativeWindow = nativeWindow;
return true;
#else
return false;
@@ -75,13 +80,17 @@ bool CEGLNativeTypeAmlogic::CreateNativeWindow()
bool CEGLNativeTypeAmlogic::GetNativeDisplay(EGLNativeDisplayType **nativeDisplay) const
{
- *nativeDisplay = (EGLNativeDisplayType*) &m_nativeDisplay;
+ if (!nativeDisplay)
+ return false;
+ *nativeDisplay = (XBNativeDisplayType*) &m_nativeDisplay;
return true;
}
-bool CEGLNativeTypeAmlogic::GetNativeWindow(EGLNativeWindowType **nativeWindow) const
+bool CEGLNativeTypeAmlogic::GetNativeWindow(XBNativeWindowType **nativeWindow) const
{
- *nativeWindow = (EGLNativeWindowType*) &m_nativeWindow;
+ if (!nativeWindow)
+ return false;
+ *nativeWindow = (XBNativeWindowType*) &m_nativeWindow;
return true;
}
diff --git a/xbmc/windowing/egl/EGLNativeTypeAmlogic.h b/xbmc/windowing/egl/EGLNativeTypeAmlogic.h
index 42f7a0ee37..6beb9562a6 100644
--- a/xbmc/windowing/egl/EGLNativeTypeAmlogic.h
+++ b/xbmc/windowing/egl/EGLNativeTypeAmlogic.h
@@ -34,8 +34,8 @@ public:
virtual bool CreateNativeDisplay();
virtual bool CreateNativeWindow();
- virtual bool GetNativeDisplay(EGLNativeDisplayType **nativeDisplay) const;
- virtual bool GetNativeWindow(EGLNativeWindowType **nativeWindow) const;
+ virtual bool GetNativeDisplay(XBNativeDisplayType **nativeDisplay) const;
+ virtual bool GetNativeWindow(XBNativeWindowType **nativeWindow) const;
virtual bool DestroyNativeWindow();
virtual bool DestroyNativeDisplay();
diff --git a/xbmc/windowing/egl/EGLNativeTypeAndroid.cpp b/xbmc/windowing/egl/EGLNativeTypeAndroid.cpp
index c06f4a2833..d045efed59 100644
--- a/xbmc/windowing/egl/EGLNativeTypeAndroid.cpp
+++ b/xbmc/windowing/egl/EGLNativeTypeAndroid.cpp
@@ -18,6 +18,7 @@
*
*/
#include "system.h"
+#include <EGL/egl.h>
#include "EGLNativeTypeAndroid.h"
#include "utils/log.h"
#include "guilib/gui3d.h"
@@ -65,15 +66,19 @@ bool CEGLNativeTypeAndroid::CreateNativeWindow()
#endif
}
-bool CEGLNativeTypeAndroid::GetNativeDisplay(EGLNativeDisplayType **nativeDisplay) const
+bool CEGLNativeTypeAndroid::GetNativeDisplay(XBNativeDisplayType **nativeDisplay) const
{
- *nativeDisplay = (EGLNativeDisplayType*) &m_nativeDisplay;
+ if (!nativeDisplay)
+ return false;
+ *nativeDisplay = (XBNativeDisplayType*) &m_nativeDisplay;
return true;
}
-bool CEGLNativeTypeAndroid::GetNativeWindow(EGLNativeWindowType **nativeWindow) const
+bool CEGLNativeTypeAndroid::GetNativeWindow(XBNativeWindowType **nativeWindow) const
{
- *nativeWindow = (EGLNativeWindowType*) &m_nativeWindow;
+ if (!nativeWindow)
+ return false;
+ *nativeWindow = (XBNativeWindowType*) &m_nativeWindow;
return true;
}
@@ -90,10 +95,10 @@ bool CEGLNativeTypeAndroid::DestroyNativeWindow()
bool CEGLNativeTypeAndroid::GetNativeResolution(RESOLUTION_INFO *res) const
{
#if defined(TARGET_ANDROID)
- ANativeWindow_acquire(m_nativeWindow);
- res->iWidth = ANativeWindow_getWidth(m_nativeWindow);
- res->iHeight= ANativeWindow_getHeight(m_nativeWindow);
- ANativeWindow_release(m_nativeWindow);
+ ANativeWindow_acquire((EGLNativeWindowType)m_nativeWindow);
+ res->iWidth = ANativeWindow_getWidth((EGLNativeWindowType)m_nativeWindow);
+ res->iHeight= ANativeWindow_getHeight((EGLNativeWindowType)m_nativeWindow);
+ ANativeWindow_release((EGLNativeWindowType)m_nativeWindow);
res->fRefreshRate = 60;
res->dwFlags= D3DPRESENTFLAG_PROGRESSIVE;
diff --git a/xbmc/windowing/egl/EGLNativeTypeAndroid.h b/xbmc/windowing/egl/EGLNativeTypeAndroid.h
index eb7afbfb6c..ec5a398415 100644
--- a/xbmc/windowing/egl/EGLNativeTypeAndroid.h
+++ b/xbmc/windowing/egl/EGLNativeTypeAndroid.h
@@ -34,8 +34,8 @@ public:
virtual bool CreateNativeDisplay();
virtual bool CreateNativeWindow();
- virtual bool GetNativeDisplay(EGLNativeDisplayType **nativeDisplay) const;
- virtual bool GetNativeWindow(EGLNativeWindowType **nativeWindow) const;
+ virtual bool GetNativeDisplay(XBNativeDisplayType **nativeDisplay) const;
+ virtual bool GetNativeWindow(XBNativeWindowType **nativeWindow) const;
virtual bool DestroyNativeWindow();
virtual bool DestroyNativeDisplay();
diff --git a/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp b/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp
index a4b1b07669..4a2d35823e 100644
--- a/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp
+++ b/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.cpp
@@ -19,6 +19,7 @@
*/
#include "system.h"
+#include <EGL/egl.h>
#include "EGLNativeTypeRaspberryPI.h"
#include "utils/log.h"
#include "guilib/gui3d.h"
@@ -133,16 +134,20 @@ bool CEGLNativeTypeRaspberryPI::CreateNativeWindow()
#endif
}
-bool CEGLNativeTypeRaspberryPI::GetNativeDisplay(EGLNativeDisplayType **nativeDisplay) const
+bool CEGLNativeTypeRaspberryPI::GetNativeDisplay(XBNativeDisplayType **nativeDisplay) const
{
- *nativeDisplay = (EGLNativeDisplayType*) &m_nativeDisplay;
+ if (!nativeDisplay)
+ return false;
+ *nativeDisplay = (XBNativeDisplayType*) &m_nativeDisplay;
return true;
}
-bool CEGLNativeTypeRaspberryPI::GetNativeWindow(EGLNativeWindowType **nativeWindow) const
+bool CEGLNativeTypeRaspberryPI::GetNativeWindow(XBNativeDisplayType **nativeWindow) const
{
- *nativeWindow = (EGLNativeWindowType*) &m_nativeWindow;
DLOG("CEGLNativeTypeRaspberryPI::GetNativeWindow\n");
+ if (!nativeWindow)
+ return false;
+ *nativeWindow = (XBNativeWindowType*) &m_nativeWindow;
return true;
}
diff --git a/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.h b/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.h
index 73440e22eb..f54fb583bf 100644
--- a/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.h
+++ b/xbmc/windowing/egl/EGLNativeTypeRaspberryPI.h
@@ -21,7 +21,10 @@
*/
#include "EGLNativeType.h"
+#if defined(TARGET_RASPBERRY_PI)
#include <semaphore.h>
+#include <bcm_host.h>
+#endif
class DllBcmHost;
class CEGLNativeTypeRaspberryPI : public CEGLNativeType
@@ -37,8 +40,8 @@ public:
virtual bool CreateNativeDisplay();
virtual bool CreateNativeWindow();
- virtual bool GetNativeDisplay(EGLNativeDisplayType **nativeDisplay) const;
- virtual bool GetNativeWindow(EGLNativeWindowType **nativeWindow) const;
+ virtual bool GetNativeDisplay(XBNativeDisplayType **nativeDisplay) const;
+ virtual bool GetNativeWindow(XBNativeWindowType **nativeWindow) const;
virtual bool DestroyNativeWindow();
virtual bool DestroyNativeDisplay();
diff --git a/xbmc/windowing/egl/EGLWrapper.cpp b/xbmc/windowing/egl/EGLWrapper.cpp
index c8bb3ca22a..a5442e164f 100644
--- a/xbmc/windowing/egl/EGLWrapper.cpp
+++ b/xbmc/windowing/egl/EGLWrapper.cpp
@@ -191,7 +191,7 @@ bool CEGLWrapper::InitDisplay(EGLDisplay *display)
//nativeDisplay can be (and usually is) NULL. Don't use if(nativeDisplay) as a test!
EGLint status;
EGLNativeDisplayType *nativeDisplay = NULL;
- if (!m_nativeTypes->GetNativeDisplay(&nativeDisplay))
+ if (!m_nativeTypes->GetNativeDisplay((XBNativeDisplayType**)&nativeDisplay))
return false;
*display = eglGetDisplay(*nativeDisplay);
@@ -263,7 +263,7 @@ bool CEGLWrapper::CreateSurface(EGLDisplay display, EGLConfig config, EGLSurface
return false;
EGLNativeWindowType *nativeWindow=NULL;
- if (!m_nativeTypes->GetNativeWindow(&nativeWindow))
+ if (!m_nativeTypes->GetNativeWindow((XBNativeWindowType**)&nativeWindow))
return false;
*surface = eglCreateWindowSurface(display, config, *nativeWindow, NULL);
diff --git a/xbmc/windowing/egl/EGLWrapper.h b/xbmc/windowing/egl/EGLWrapper.h
index c0335f65f9..38649823b4 100644
--- a/xbmc/windowing/egl/EGLWrapper.h
+++ b/xbmc/windowing/egl/EGLWrapper.h
@@ -21,6 +21,7 @@
*/
#include "guilib/Resolution.h"
+#include <EGL/egl.h>
class CEGLNativeType;
class CEGLWrapper
{