Dropped utarray in favor of our ptrArray. This should get rid of our strdup woes.

This commit is contained in:
Pietro Gagliardi 2015-11-27 20:38:21 -05:00
parent c87cf13d67
commit f5a2759b09
2 changed files with 13 additions and 18 deletions

View File

@ -9,7 +9,6 @@ extern "C" {
#define uthash_malloc(sz) uiAlloc((sz), "(uthash internal)")
#define uthash_free(ptr,sz) uiFree((ptr))
#include "uthash/uthash.h"
#include "uthash/utarray.h"
extern uiInitOptions options;

View File

@ -309,7 +309,7 @@ void uiDrawPathEnd(uiDrawPath *p)
struct uiDrawContext {
ID2D1RenderTarget *rt;
UT_array *states;
struct ptrArray *states;
ID2D1PathGeometry *currentClip;
};
@ -813,28 +813,22 @@ struct state {
ID2D1PathGeometry *clip;
};
static const UT_icd stateicd = {
.sz = sizeof (struct state),
.init = NULL,
.copy = NULL,
.dtor = NULL,
};
static void initStates(uiDrawContext *c)
{
utarray_new(c->states, &stateicd);
c->states = newPtrArray();
}
static void uninitStates(uiDrawContext *c)
{
if (utarray_len(c->states) > 0)
// have a helpful diagnostic here
if (c->states->len > 0)
complain("imbalanced save/restore count in uiDrawContext in uninitStates(); did you save without restoring?");
utarray_free(c->states);
ptrArrayDestroy(c->states);
}
void uiDrawSave(uiDrawContext *c)
{
struct state state;
struct state *state;
ID2D1DrawingStateBlock *dsb;
HRESULT hr;
@ -851,16 +845,17 @@ void uiDrawSave(uiDrawContext *c)
if (c->currentClip != NULL)
ID2D1PathGeometry_AddRef(c->currentClip);
state.dsb = dsb;
state.clip = c->currentClip;
utarray_push_back(c->states, &state);
state = uiNew(struct state);
state->dsb = dsb;
state->clip = c->currentClip;
ptrArrayAppend(c->states, state);
}
void uiDrawRestore(uiDrawContext *c)
{
struct state *state;
state = (struct state *) utarray_back(c->states);
state = ptrArrayIndex(c->states, struct state *, c->states->len - 1);
ID2D1RenderTarget_RestoreDrawingState(c->rt, state->dsb);
ID2D1DrawingStateBlock_Release(state->dsb);
@ -871,5 +866,6 @@ void uiDrawRestore(uiDrawContext *c)
// no need to explicitly addref or release; just transfer the ref
c->currentClip = state->clip;
utarray_pop_back(c->states);
uiFree(state);
ptrArrayDelete(c->states, c->states->len - 1);
}