Equalizer
1.6.1
Main Page
Related Pages
Namespaces
Classes
Files
File List
install
share
Equalizer
examples
eqAsync
asyncFetcher.h
1
2
/* Copyright (c) 2009-2011, Maxim Makhinya <maxmah@gmail.com>
3
* 2012, Stefan Eilemann <eile@eyescale.ch>
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
*
8
* - Redistributions of source code must retain the above copyright notice, this
9
* list of conditions and the following disclaimer.
10
* - Redistributions in binary form must reproduce the above copyright notice,
11
* this list of conditions and the following disclaimer in the documentation
12
* and/or other materials provided with the distribution.
13
* - Neither the name of Eyescale Software GmbH nor the names of its
14
* contributors may be used to endorse or promote products derived from this
15
* software without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
* POSSIBILITY OF SUCH DAMAGE.
28
*
29
*/
30
31
#ifndef EQASYNC_ASYNC_FETCHER_H
32
#define EQASYNC_ASYNC_FETCHER_H
33
34
#include <eq/eq.h>
35
36
namespace
eqAsync
37
{
38
42
struct
TextureId
43
{
44
TextureId
(
const
GLuint id_ = 0,
const
void
* key_ = 0 )
45
: id( id_ ), key( key_ ){};
46
47
GLuint id;
// OpenGL texture id
48
const
void
* key;
// Object manager key; used to delete textures
49
};
50
51
class
Window
;
52
56
class
AsyncFetcher
:
protected
lunchbox::Thread
57
{
58
public
:
59
AsyncFetcher
();
60
~
AsyncFetcher
();
61
62
void
setup(
Window
* window );
63
void
stop();
64
65
// TextureId getTextureId() { return _outQueue.pop().id; }
66
bool
tryGetTextureId(
TextureId
& val ) {
return
_outQueue.tryPop( val ); }
67
void
deleteTexture(
const
void
* key ) { _inQueue.push( key ); }
68
69
protected
:
70
virtual
void
run
();
71
const
GLEWContext* glewGetContext()
const
;
72
73
private
:
74
lunchbox::MTQueue<const void*> _inQueue;
// textures to delete
75
lunchbox::MTQueue<TextureId> _outQueue;
// generated textures
76
eq::SystemWindow
* _sharedWindow;
77
};
78
79
}
80
81
#endif //EQASYNC_ASYNC_FETCHER_H
eqAsync::Window
Definition:
eqAsync.h:53
eqAsync::TextureId
Structure to associate OpenGL texture ids with an external key.
Definition:
asyncFetcher.h:42
eqAsync::AsyncFetcher
Asynchronous fetching thread.
Definition:
asyncFetcher.h:56
eqAsync::AsyncFetcher::run
virtual void run()
Function for creating and holding of shared context.
Definition:
asyncFetcher.cpp:120
eq::SystemWindow
The interface definition for system-specific windowing code.
Definition:
systemWindow.h:35
Generated on Thu Dec 5 2013 14:22:27 for Equalizer by
1.8.5