mirror of
https://github.com/gnif/LookingGlass.git
synced 2025-01-11 14:43:57 +00:00
[c-host] change getFrame/Pointer to return a real status
This commit is contained in:
parent
496fd79714
commit
88c2e55acf
3 changed files with 39 additions and 16 deletions
14
c-host/app.c
14
c-host/app.c
|
@ -86,12 +86,20 @@ static int frameThread(void * opaque)
|
||||||
|
|
||||||
while(app.running)
|
while(app.running)
|
||||||
{
|
{
|
||||||
CaptureFrame frame;
|
CaptureResult result;
|
||||||
|
CaptureFrame frame;
|
||||||
|
|
||||||
frame.data = app.frame[frameIndex];
|
frame.data = app.frame[frameIndex];
|
||||||
if (!app.iface->getFrame(&frame))
|
result = app.iface->getFrame(&frame);
|
||||||
|
if (result == CAPTURE_RESULT_REINIT)
|
||||||
|
{
|
||||||
|
app.reinit = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result == CAPTURE_RESULT_ERROR)
|
||||||
{
|
{
|
||||||
DEBUG_ERROR("Failed to get the frame");
|
DEBUG_ERROR("Failed to get the frame");
|
||||||
app.reinit = true;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,8 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
typedef enum CaptureResult
|
typedef enum CaptureResult
|
||||||
{
|
{
|
||||||
CAPTURE_RESULT_OK,
|
CAPTURE_RESULT_OK ,
|
||||||
CAPTURE_RESULT_REINIT,
|
CAPTURE_RESULT_REINIT ,
|
||||||
CAPTURE_RESULT_TIMEOUT,
|
CAPTURE_RESULT_TIMEOUT,
|
||||||
CAPTURE_RESULT_ERROR
|
CAPTURE_RESULT_ERROR
|
||||||
}
|
}
|
||||||
|
@ -78,9 +78,8 @@ typedef struct CaptureInterface
|
||||||
void (*free )();
|
void (*free )();
|
||||||
unsigned int (*getMaxFrameSize)();
|
unsigned int (*getMaxFrameSize)();
|
||||||
|
|
||||||
CaptureResult (*capture)();
|
CaptureResult (*capture )();
|
||||||
|
CaptureResult (*getFrame )(CaptureFrame * frame );
|
||||||
bool (*getFrame )(CaptureFrame * frame );
|
CaptureResult (*getPointer)(CapturePointer * pointer);
|
||||||
bool (*getPointer)(CapturePointer * pointer);
|
|
||||||
}
|
}
|
||||||
CaptureInterface;
|
CaptureInterface;
|
|
@ -579,22 +579,22 @@ static CaptureResult dxgi_capture(bool * hasFrameUpdate, bool * hasPointerUpdate
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool dxgi_getFrame(CaptureFrame * frame)
|
static CaptureResult dxgi_getFrame(CaptureFrame * frame)
|
||||||
{
|
{
|
||||||
assert(this);
|
assert(this);
|
||||||
assert(this->initialized);
|
assert(this->initialized);
|
||||||
|
|
||||||
if (this->reinit)
|
if (this->reinit)
|
||||||
return true;
|
return CAPTURE_RESULT_REINIT;
|
||||||
|
|
||||||
if (!os_waitEvent(this->frameEvent, TIMEOUT_INFINITE))
|
if (!os_waitEvent(this->frameEvent, TIMEOUT_INFINITE))
|
||||||
{
|
{
|
||||||
DEBUG_ERROR("Failed to wait on the frame event");
|
DEBUG_ERROR("Failed to wait on the frame event");
|
||||||
return false;
|
return CAPTURE_RESULT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->reinit)
|
if (this->reinit)
|
||||||
return true;
|
return CAPTURE_RESULT_REINIT;
|
||||||
|
|
||||||
Texture * tex = &this->texture[this->texRIndex];
|
Texture * tex = &this->texture[this->texRIndex];
|
||||||
|
|
||||||
|
@ -610,12 +610,28 @@ static bool dxgi_getFrame(CaptureFrame * frame)
|
||||||
if (++this->texRIndex == MAX_TEXTURES)
|
if (++this->texRIndex == MAX_TEXTURES)
|
||||||
this->texRIndex = 0;
|
this->texRIndex = 0;
|
||||||
|
|
||||||
return true;
|
return CAPTURE_RESULT_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool dxgi_getPointer(CapturePointer * pointer)
|
static CaptureResult dxgi_getPointer(CapturePointer * pointer)
|
||||||
{
|
{
|
||||||
return false;
|
assert(this);
|
||||||
|
assert(this->initialized);
|
||||||
|
|
||||||
|
if (this->reinit)
|
||||||
|
return CAPTURE_RESULT_REINIT;
|
||||||
|
|
||||||
|
if (!os_waitEvent(this->pointerEvent, TIMEOUT_INFINITE))
|
||||||
|
{
|
||||||
|
DEBUG_ERROR("Failed to wait on the pointer event");
|
||||||
|
return CAPTURE_RESULT_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this->reinit)
|
||||||
|
return CAPTURE_RESULT_REINIT;
|
||||||
|
|
||||||
|
|
||||||
|
return CAPTURE_RESULT_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static CaptureResult dxgi_releaseFrame()
|
static CaptureResult dxgi_releaseFrame()
|
||||||
|
|
Loading…
Reference in a new issue