hostsupport/hostegl/src/linux/EGLOs.cpp
author Matt Plumtree <matt.plumtree@nokia.com>
Mon, 15 Nov 2010 09:56:25 +0000
branchbug235_bringup_0
changeset 77 b0395290e61f
parent 53 c2ef9095503a
permissions -rw-r--r--
Ensure OpenGL ES 2.0 C functions use C signatures in C++ builds (fixes VS builds)

/* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and /or associated documentation files
 * (the "Materials "), to deal in the Materials without restriction,
 * including without limitation the rights to use, copy, modify, merge,
 * publish, distribute, sublicense, and/or sell copies of the Materials,
 * and to permit persons to whom the Materials are furnished to do so,
 * subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Materials.
 *
 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR
 * THE USE OR OTHER DEALINGS IN THE MATERIALS.
 *
 * Initial Contributors:
 * Nokia Corporation - initial contribution.
 *
 * Contributors:
 *
 * Description:
 *
 */

#include "EGLOs.h"
#include "EGLState.h"
#include "EGLProcess.h"
#include "EGLThread.h"
#include "EGLWindowSurface.h"
#include "EGLDisplay.h"

#include <dlfcn.h>

void CEGLOs::InitializeLock( EGLI_LOCK *lock )
    {
    // \todo
    EGLI_ASSERT( false );
    }

void CEGLOs::GetLock( EGLI_LOCK *lock )
    {
    // \todo
    EGLI_ASSERT( false );
    }

void CEGLOs::ReleaseLock(EGLI_LOCK *lock )
    {
    // \todo
    EGLI_ASSERT( false );
    }

void CEGLOs::DestroyLock( EGLI_LOCK *lock )
    {
    // \todo
    EGLI_ASSERT( false );
    }

void CEGLOs::ConfigToNativePixelFormat( const CEGLConfig& config, EGLINativePixelFormatType* nativeFormat )
    {
    // \todo
    EGLI_ASSERT( false );
    }

/*static*/ EGLINativeContextType CEGLOs::CreateNativeContext( const CEGLConfig& config, EGLINativeDisplayType display, EGLINativeContextType shareContext )
    {
    // \todo
    EGLI_ASSERT( false );
    return NULL;
    }

EGLINativeContextType CEGLOs::CurrentNativeContext()
    {
    // \todo
    EGLI_ASSERT( false );
    return NULL;
    }

EGLINativeDisplayType CEGLOs::CurrentNativeSurface()
    {
    // \todo
    EGLI_ASSERT( false );
    return NULL;
    }

bool CEGLOs::MakeNativeContextCurrent( struct EGLINativeGLFunctions* func, EGLINativeDisplayType draw, EGLINativeDisplayType read, EGLINativeContextType context )
    {
    // \todo
    EGLI_ASSERT( false );
    return false;
    }

bool CEGLOs::DestroyNativeContext( EGLINativeContextType context )
    {
    // \todo
    EGLI_ASSERT( false );
    return false;
    }

bool CEGLOs::InitializeNativeGLFunctions( struct EGLINativeGLFunctions* func, EGLINativeDisplayType display, EGLINativeContextType context )
    {
    // \todo
    EGLI_ASSERT( false );
    return false;
    }

struct EGLINativePbufferContainer* CEGLOs::CreateNativePbuffer( EGLINativeDisplayType display,
        const CEGLConfig& config, EGLint width, EGLint height, EGLBoolean largestPbuffer,
        EGLint textureFormat, EGLint textureTarget )
    {
    // \todo
    EGLI_ASSERT( false );
    return NULL;
    }

bool CEGLOs::DestroyNativePbuffer( struct EGLINativePbufferContainer* container )
    {
    // \todo
    EGLI_ASSERT( false );
    return false;
    }

EGLINativeWindowType CEGLOs::CreateNativeWindow( int width, int height )
    {
    // \todo
    EGLI_ASSERT( false );
    return NULL;
    }

bool CEGLOs::IsValidNativeWindow( EGLINativeWindowType wnd )
    {
    // \todo
    EGLI_ASSERT( false );
    return false;
    }

bool CEGLOs::GetNativeWindowSize( EGLINativeWindowType wnd, int& width, int& height )
    {
    // \todo
    EGLI_ASSERT( false );
    return false;
    }

EGLIOsWindowContext* CEGLOs::CreateOSWindowContext( EGLINativeWindowType wnd, const CEGLConfig& config )
    {
    // \todo
    EGLI_ASSERT( false );
    return NULL;
    }

void CEGLOs::DestroyOSWindowContext( EGLIOsWindowContext* context )
    {
    // \todo
    EGLI_ASSERT( false );
    }

void CEGLOs::BlitToOSWindow( EGLenum api, CEGLDisplay* display, EGLIOsWindowContext* context, void* buf, int w, int h, int stride )
    {
    // \todo
    EGLI_ASSERT( false );
    }

void* CEGLOs::LoadHostGL()
    {
    EGLI_ASSERT(0);
    return NULL;
    }

void* CEGLOs::GetGLProcAddress(EGLILibraryHandle& libraryHandle, const char* proc)
    {
    EGLI_ASSERT(0);
    return NULL;
    }

bool CEGLOs::FreeClientLibrary(EGLILibraryHandle& libraryHandle)
    {
    //assert(libraryHandle);
    return (dlclose(libraryHandle) == 0);
    }

IEGLtoVGInterface* CEGLOs::LoadVGInterface( void*& libraryHandle )
    {
    fpGetVGInterface proc;
    void* libHandle = dlopen("libopenvg_sf.so", RTLD_NOW);

    if (libHandle == NULL)
        return NULL;

    libraryHandle = libHandle;
    proc = (fpGetVGInterface)dlsym(libHandle, "getVGInterface");

    if (!proc)
        return NULL;

    return proc();
    }

IEGLtoGLES2Interface* CEGLOs::LoadGLES2Interface( void*& libraryHandle )
    {
    EGLI_ASSERT( false );
    return NULL;
    }