Kaydet (Commit) e65acd2e authored tarafından Markus Mohrhard's avatar Markus Mohrhard

use SystemWindowData to request a NSOpenGLWindow

Change-Id: Ief50a2fc533846cd61be66b1ea166a992942083b
üst ff3321cf
...@@ -51,6 +51,7 @@ struct SystemEnvData ...@@ -51,6 +51,7 @@ struct SystemEnvData
HWND hWnd; // the window hwnd HWND hWnd; // the window hwnd
#elif defined( MACOSX ) #elif defined( MACOSX )
NSView* mpNSView; // the cocoa (NSView *) implementing this object NSView* mpNSView; // the cocoa (NSView *) implementing this object
bool mbOpenGL; // use a OpenGL providing NSView
#elif defined( ANDROID ) #elif defined( ANDROID )
// Nothing // Nothing
#elif defined( IOS ) #elif defined( IOS )
...@@ -75,6 +76,7 @@ struct SystemEnvData ...@@ -75,6 +76,7 @@ struct SystemEnvData
, hWnd(0) , hWnd(0)
#elif defined( MACOSX ) #elif defined( MACOSX )
, mpNSView(NULL) , mpNSView(NULL)
, mbOpenGL(false)
#elif defined( ANDROID ) #elif defined( ANDROID )
#elif defined( IOS ) #elif defined( IOS )
#elif defined( UNX ) #elif defined( UNX )
...@@ -174,7 +176,8 @@ struct SystemWindowData ...@@ -174,7 +176,8 @@ struct SystemWindowData
{ {
unsigned long nSize; // size in bytes of this structure unsigned long nSize; // size in bytes of this structure
#if defined( WNT ) // meaningless on Windows #if defined( WNT ) // meaningless on Windows
#elif defined( MACOSX ) // meaningless on Mac OS X #elif defined( MACOSX )
bool bOpenGL; // create a OpenGL providing NSView
// Nothing // Nothing
#elif defined( ANDROID ) #elif defined( ANDROID )
// Nothing // Nothing
......
...@@ -52,7 +52,7 @@ public: ...@@ -52,7 +52,7 @@ public:
void setClippedPosSize(); void setClippedPosSize();
AquaSalObject( AquaSalFrame* pFrame ); AquaSalObject( AquaSalFrame* pFrame, SystemWindowData* pWinData );
virtual ~AquaSalObject(); virtual ~AquaSalObject();
virtual void ResetClipRegion() SAL_OVERRIDE; virtual void ResetClipRegion() SAL_OVERRIDE;
......
...@@ -757,13 +757,12 @@ void AquaSalInstance::DestroyFrame( SalFrame* pFrame ) ...@@ -757,13 +757,12 @@ void AquaSalInstance::DestroyFrame( SalFrame* pFrame )
delete pFrame; delete pFrame;
} }
SalObject* AquaSalInstance::CreateObject( SalFrame* pParent, SystemWindowData* /* pWindowData */, bool /* bShow */ ) SalObject* AquaSalInstance::CreateObject( SalFrame* pParent, SystemWindowData* pWindowData, bool /* bShow */ )
{ {
// SystemWindowData is meaningless on Mac OS X
AquaSalObject *pObject = NULL; AquaSalObject *pObject = NULL;
if ( pParent ) if ( pParent )
pObject = new AquaSalObject( static_cast<AquaSalFrame*>(pParent) ); pObject = new AquaSalObject( static_cast<AquaSalFrame*>(pParent), pWindowData );
return pObject; return pObject;
} }
......
...@@ -22,8 +22,9 @@ ...@@ -22,8 +22,9 @@
#include "osx/saldata.hxx" #include "osx/saldata.hxx"
#include "osx/salobj.h" #include "osx/salobj.h"
#include "osx/salframe.h" #include "osx/salframe.h"
#include <AppKit/NSOpenGLView.h>
AquaSalObject::AquaSalObject( AquaSalFrame* pFrame ) : AquaSalObject::AquaSalObject( AquaSalFrame* pFrame, SystemWindowData* pWindowData ) :
mpFrame( pFrame ), mpFrame( pFrame ),
mnClipX( -1 ), mnClipX( -1 ),
mnClipY( -1 ), mnClipY( -1 ),
...@@ -37,6 +38,7 @@ AquaSalObject::AquaSalObject( AquaSalFrame* pFrame ) : ...@@ -37,6 +38,7 @@ AquaSalObject::AquaSalObject( AquaSalFrame* pFrame ) :
{ {
maSysData.nSize = sizeof( maSysData ); maSysData.nSize = sizeof( maSysData );
maSysData.mpNSView = NULL; maSysData.mpNSView = NULL;
maSysData.mbOpenGL = pWindowData->bOpenGL;
NSRect aInitFrame = { NSZeroPoint, { 20, 20 } }; NSRect aInitFrame = { NSZeroPoint, { 20, 20 } };
mpClipView = [[NSClipView alloc] initWithFrame: aInitFrame ]; mpClipView = [[NSClipView alloc] initWithFrame: aInitFrame ];
...@@ -45,8 +47,25 @@ AquaSalObject::AquaSalObject( AquaSalFrame* pFrame ) : ...@@ -45,8 +47,25 @@ AquaSalObject::AquaSalObject( AquaSalFrame* pFrame ) :
[mpFrame->getNSView() addSubview: mpClipView]; [mpFrame->getNSView() addSubview: mpClipView];
[mpClipView setHidden: YES]; [mpClipView setHidden: YES];
} }
maSysData.mpNSView = [[NSView alloc] initWithFrame: aInitFrame]; if (pWindowData->bOpenGL)
if( maSysData.mpNSView ) {
NSOpenGLPixelFormatAttribute aAttributes[] =
{
NSOpenGLPFADoubleBuffer,
NSOpenGLPFAAlphaSize, 8,
NSOpenGLPFAColorSize, 24,
0
};
NSOpenGLPixelFormat* pixFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:aAttributes];
maSysData.mpNSView = [[NSOpenGLView alloc] initWithFrame: aInitFrame pixelFormat:pixFormat];
}
else
{
maSysData.mpNSView = [[NSView alloc] initWithFrame: aInitFrame];
}
if( maSysData.mpNSView )
{ {
if( mpClipView ) if( mpClipView )
[mpClipView setDocumentView: maSysData.mpNSView]; [mpClipView setDocumentView: maSysData.mpNSView];
......
...@@ -724,6 +724,9 @@ bool OpenGLContext::initWindow() ...@@ -724,6 +724,9 @@ bool OpenGLContext::initWindow()
SystemWindowData OpenGLContext::generateWinData(Window* /*pParent*/) SystemWindowData OpenGLContext::generateWinData(Window* /*pParent*/)
{ {
SystemWindowData aWinData; SystemWindowData aWinData;
#if defined(MACOSX)
aWinData.bOpenGL = true;
#endif
aWinData.nSize = sizeof(aWinData); aWinData.nSize = sizeof(aWinData);
return aWinData; return aWinData;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment