forked from enlightenment/efl
149 lines
3.2 KiB
C
149 lines
3.2 KiB
C
#include "shared_buffer.h"
|
|
|
|
struct _Shared_Buffer
|
|
{
|
|
Ecore_Buffer *buffer;
|
|
struct bq_buffer *resource;
|
|
const char *engine;
|
|
int w, h;
|
|
int format;
|
|
unsigned int flags;
|
|
Shared_Buffer_State state;
|
|
};
|
|
|
|
Shared_Buffer *
|
|
_shared_buffer_new(const char *engine, struct bq_buffer *resource, int w, int h, int format, unsigned int flags)
|
|
{
|
|
Shared_Buffer *sb;
|
|
|
|
sb = calloc(1, sizeof(Shared_Buffer));
|
|
if (!sb)
|
|
return NULL;
|
|
|
|
sb->engine = eina_stringshare_add(engine);
|
|
sb->resource = resource;
|
|
sb->w = w;
|
|
sb->h = h;
|
|
sb->format = format;
|
|
sb->flags = flags;
|
|
sb->state = SHARED_BUFFER_STATE_NEW;
|
|
|
|
return sb;
|
|
}
|
|
|
|
void
|
|
_shared_buffer_free(Shared_Buffer *sb)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(sb);
|
|
|
|
if (sb->engine) eina_stringshare_del(sb->engine);
|
|
free(sb);
|
|
}
|
|
|
|
Eina_Bool
|
|
_shared_buffer_info_get(Shared_Buffer *sb, const char **engine, int *w, int *h, int *format, unsigned int *flags)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(sb, EINA_FALSE);
|
|
|
|
if (engine) *engine = sb->engine;
|
|
if (w) *w = sb->w;
|
|
if (h) *h = sb->h;
|
|
if (format) *format = sb->format;
|
|
if (flags) *flags = sb->flags;
|
|
|
|
return EINA_TRUE;
|
|
}
|
|
|
|
Eina_Bool
|
|
_shared_buffer_buffer_set(Shared_Buffer *sb, Ecore_Buffer *buffer)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(sb, EINA_FALSE);
|
|
|
|
if (sb->buffer)
|
|
{
|
|
ERR("Already exist buffer");
|
|
return EINA_FALSE;
|
|
}
|
|
|
|
sb->buffer = buffer;
|
|
|
|
return EINA_TRUE;
|
|
}
|
|
|
|
Ecore_Buffer *
|
|
_shared_buffer_buffer_get(Shared_Buffer *sb)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(sb, NULL);
|
|
|
|
return sb->buffer;
|
|
}
|
|
|
|
Eina_Bool
|
|
_shared_buffer_resource_set(Shared_Buffer *sb, struct bq_buffer *resource)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(sb, EINA_FALSE);
|
|
|
|
if (sb->resource)
|
|
{
|
|
ERR("Already exist resource");
|
|
return EINA_FALSE;
|
|
}
|
|
|
|
sb->resource = resource;
|
|
|
|
return EINA_TRUE;
|
|
}
|
|
|
|
struct bq_buffer *
|
|
_shared_buffer_resource_get(Shared_Buffer *sb)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(sb, NULL);
|
|
|
|
return sb->resource;
|
|
}
|
|
|
|
void
|
|
_shared_buffer_state_set(Shared_Buffer *sb, Shared_Buffer_State state)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(sb);
|
|
|
|
sb->state = state;
|
|
}
|
|
|
|
Shared_Buffer_State
|
|
_shared_buffer_state_get(Shared_Buffer *sb)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(sb, SHARED_BUFFER_STATE_UNKNOWN);
|
|
|
|
return sb->state;
|
|
}
|
|
|
|
const char *
|
|
_shared_buffer_state_string_get(Shared_Buffer *sb)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(sb, "INVAILD OBJECT");
|
|
|
|
switch (sb->state)
|
|
{
|
|
case SHARED_BUFFER_STATE_ENQUEUE:
|
|
return "SHARED_BUFFER_STATE_ENQUEUE";
|
|
case SHARED_BUFFER_STATE_SUBMIT:
|
|
return "SHARED_BUFFER_STATE_SUBMIT";
|
|
case SHARED_BUFFER_STATE_DEQUEUE:
|
|
return "SHARED_BUFFER_STATE_DEQUEUE";
|
|
case SHARED_BUFFER_STATE_ATTACH:
|
|
return "SHARED_BUFFER_STATE_ATTACH";
|
|
case SHARED_BUFFER_STATE_IMPORT:
|
|
return "SHARED_BUFFER_STATE_IMPORT";
|
|
case SHARED_BUFFER_STATE_DETACH:
|
|
return "SHARED_BUFFER_STATE_DETACH";
|
|
case SHARED_BUFFER_STATE_ACQUIRE:
|
|
return "SHARED_BUFFER_STATE_ACQUIRE";
|
|
case SHARED_BUFFER_STATE_RELEASE:
|
|
return "SHARED_BUFFER_STATE_RELEASE";
|
|
default:
|
|
case SHARED_BUFFER_STATE_UNKNOWN:
|
|
return "SHARED_BUFFER_STATE_UNKNOWN";
|
|
}
|
|
}
|