eglfs: Pass QSurfaceFormat to createNativeWindow() hook

Change-Id: Ib352d8591360a224359ef218b95cd27cdfaf81aa
Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
This commit is contained in:
Johannes Zellner 2012-06-13 18:21:35 -07:00 committed by Qt by Nokia
parent f2d04d9b8c
commit 11aa64b1a1
6 changed files with 15 additions and 10 deletions

View File

@ -54,7 +54,7 @@ class QEglFS8726MHooks : public QEglFSHooks
{
public:
virtual QSize screenSize() const;
virtual EGLNativeWindowType createNativeWindow(const QSize &size);
virtual EGLNativeWindowType createNativeWindow(const QSize &size, const QSurfaceFormat &format);
virtual void destroyNativeWindow(EGLNativeWindowType window);
};
@ -75,8 +75,10 @@ QSize QEglFS8726MHooks::screenSize() const
return QSize(vinfo.xres, vinfo.yres);
}
EGLNativeWindowType QEglFS8726MHooks::createNativeWindow(const QSize &size)
EGLNativeWindowType QEglFS8726MHooks::createNativeWindow(const QSize &size, const QSurfaceFormat &format)
{
Q_UNUSED(format);
fbdev_window *window = new fbdev_window;
window->width = size.width();
window->height = size.height();

View File

@ -241,7 +241,7 @@ public:
virtual void platformDestroy();
virtual EGLNativeDisplayType platformDisplay() const;
virtual QSize screenSize() const;
virtual EGLNativeWindowType createNativeWindow(const QSize &size);
virtual EGLNativeWindowType createNativeWindow(const QSize &size, const QSurfaceFormat &format);
virtual void destroyNativeWindow(EGLNativeWindowType window);
virtual bool hasCapability(QPlatformIntegration::Capability cap) const;
@ -293,9 +293,9 @@ QSize QEglFSPiHooks::screenSize() const
#endif
}
EGLNativeWindowType QEglFSPiHooks::createNativeWindow(const QSize &size)
EGLNativeWindowType QEglFSPiHooks::createNativeWindow(const QSize &size, const QSurfaceFormat &format)
{
return createDispmanxLayer(QPoint(0, 0), size, 1, DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS);
return createDispmanxLayer(QPoint(0, 0), size, 1, format.hasAlpha() ? DISPMANX_FLAGS_ALPHA_FROM_SOURCE : DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS);
}
void QEglFSPiHooks::destroyNativeWindow(EGLNativeWindowType window)

View File

@ -62,7 +62,7 @@ public:
virtual int screenDepth() const;
virtual QImage::Format screenFormat() const;
virtual QSurfaceFormat surfaceFormatFor(const QSurfaceFormat &inputFormat) const;
virtual EGLNativeWindowType createNativeWindow(const QSize &size);
virtual EGLNativeWindowType createNativeWindow(const QSize &size, const QSurfaceFormat &format);
virtual void destroyNativeWindow(EGLNativeWindowType window);
virtual bool hasCapability(QPlatformIntegration::Capability cap) const;
virtual QEglFSCursor *createCursor(QEglFSScreen *screen) const;

View File

@ -77,9 +77,10 @@ QSurfaceFormat QEglFSHooks::surfaceFormatFor(const QSurfaceFormat &inputFormat)
return inputFormat;
}
EGLNativeWindowType QEglFSHooks::createNativeWindow(const QSize &size)
EGLNativeWindowType QEglFSHooks::createNativeWindow(const QSize &size, const QSurfaceFormat &format)
{
Q_UNUSED(size);
Q_UNUSED(format);
return 0;
}

View File

@ -52,7 +52,7 @@ public:
virtual void platformDestroy();
virtual EGLNativeDisplayType platformDisplay() const;
virtual QSize screenSize() const;
virtual EGLNativeWindowType createNativeWindow(const QSize &size);
virtual EGLNativeWindowType createNativeWindow(const QSize &size, const QSurfaceFormat &format);
virtual void destroyNativeWindow(EGLNativeWindowType window);
virtual bool hasCapability(QPlatformIntegration::Capability cap) const;
};
@ -84,8 +84,10 @@ QSize QEglFSX11Hooks::screenSize() const
return QSize(env.at(0).toInt(), env.at(1).toInt());
}
EGLNativeWindowType QEglFSX11Hooks::createNativeWindow(const QSize &size)
EGLNativeWindowType QEglFSX11Hooks::createNativeWindow(const QSize &size, const QSurfaceFormat &format)
{
Q_UNUSED(format);
Window root = DefaultRootWindow(display);
XSetWindowAttributes swa;
memset(&swa, 0, sizeof(swa));

View File

@ -78,7 +78,7 @@ void QEglFSWindow::create()
QSurfaceFormat platformFormat = hooks->surfaceFormatFor(window()->requestedFormat());
EGLConfig config = q_configFromGLFormat(display, platformFormat);
m_format = q_glFormatFromConfig(display, config);
m_window = hooks->createNativeWindow(hooks->screenSize());
m_window = hooks->createNativeWindow(hooks->screenSize(), m_format);
m_surface = eglCreateWindowSurface(display, config, m_window, NULL);
if (m_surface == EGL_NO_SURFACE) {
eglTerminate(display);