Esempio n. 1
0
void _loop_release(loop_t* p_loop) {
	if (NULL == p_loop) {
		return;
	}
	/* TODO: release frames from store */

	vector_release(p_loop->video_addresses);
	vector_release(p_loop->depth_addresses);
	vector_release(p_loop->frame_ids);
	vector_release(p_loop->cutoffs);
	free(p_loop);
}
Esempio n. 2
0
void director_release(director_handle_t handle) {
	/* TODO: some possible troubles with release code in case
	 * a thread is still running.  we could hold on to references
	 * of the threads, or have a counter w/ a mutex.
	 */
	size_t count = 0;
	size_t i = 0;
	loop_t* p_loop = NULL;
	status_t status = NO_ERROR;

	if (NULL == handle) {
		return;
	}
	
	vector_count(handle->loops, &count);
	for (i = 0; i < count; i++) {
		status = vector_element_copy(handle->loops, i, (void**)&p_loop);
		if (NO_ERROR != status) {
			_loop_release(p_loop);
		}
	}

	frame_store_release(handle->frame_store);
	vector_release(handle->loops);
	_loop_release(handle->p_current_loop);
	pthread_mutex_destroy(&(handle->loops_mutex));
	pthread_mutex_destroy(&(handle->frame_store_mutex));
	motion_detector_release(handle->motion_detector);

	free(handle);
}
Esempio n. 3
0
TEST(VectorTest, CreateRelease) {
	status_t err = NO_ERROR;
	vector_handle_t vector = NULL;

	err = vector_create(1, 1, &vector);
	ASSERT_EQ(err, NO_ERROR);
	ASSERT_TRUE(vector != NULL);
	vector_release(vector);
}
Esempio n. 4
0
vector *string_split(string *s, char *delim)
{
  vector *v;
  char *token;
  string *copy = string_new(string_data(s));
  string *part;

  v = vector_new(sizeof(string *));
  vector_release(v, string_split_release);
  for (token = strtok(string_data(copy), delim); token; token = strtok(NULL, delim))
    {
      part = string_new(token);
      vector_push_back(v, &part);
    }
  string_free(copy);

  return v;
}
Esempio n. 5
0
void
document_release(Document *document)
{
    hale_assert(document);

    _buffer_release(&document->buffer);

    for (memi i = 0;
         i < document->views_count;
         ++i)
    {
        document_view_release(&document->views[i]);
    }
    document->views_count = 0;

    // TODO: Free sessions.

    vector_release(&document->blocks);
    // vector_release(&document->views);
    // vector_free(&document->blocks);
    // vector_free(&document->sessions);
}
Esempio n. 6
0
TEST(VectorTest, AccessorsManipulators) {
	status_t err = NO_ERROR;
	vector_handle_t vector = NULL;
	size_t count = 0;
	size_t capacity = 0;
	char element = 0;
	char* p_element = NULL;

	err = vector_create(1, 1, &vector);
	ASSERT_EQ(err, NO_ERROR);
	ASSERT_TRUE(vector != NULL);

	err = vector_capacity(vector, &capacity);
	ASSERT_EQ(err, NO_ERROR);
	ASSERT_EQ(capacity, (size_t)1);


	err = vector_count(vector, &count);
	ASSERT_EQ(err, NO_ERROR);
	ASSERT_EQ(count, (size_t)0);

	err = vector_append(vector, &element);
	ASSERT_EQ(err, NO_ERROR);

	err = vector_count(vector, &count);
	ASSERT_EQ(err, NO_ERROR);
	ASSERT_EQ(count, (size_t)1);

	err = vector_pop(vector);
	ASSERT_EQ(err, NO_ERROR);

	err = vector_count(vector, &count);
	ASSERT_EQ(err, NO_ERROR);
	ASSERT_EQ(count, (size_t)0);

	for (element = 0; element < 10; element++) {
		err = vector_append(vector, &element);
		ASSERT_EQ(err, NO_ERROR);
	}

	err = vector_count(vector, &count);
	ASSERT_EQ(err, NO_ERROR);
	ASSERT_EQ(count, (size_t)10);

	err = vector_capacity(vector, &capacity);
	ASSERT_EQ(err, NO_ERROR);
	ASSERT_GT(capacity, (size_t)1);

	err = vector_element_address(vector, 5, (void**)&p_element);
	ASSERT_EQ(err, NO_ERROR);
	ASSERT_TRUE(NULL != p_element);
	ASSERT_EQ(*p_element, (char)5);

	err = vector_remove(vector, 5);
	ASSERT_EQ(err, NO_ERROR);

	err = vector_element_address(vector, 5, (void**)&p_element);
	ASSERT_EQ(err, NO_ERROR);
	ASSERT_TRUE(NULL != p_element);
	ASSERT_EQ(*p_element, (char)6);

	err = vector_count(vector, &count);
	while ((err == NO_ERROR) && (count > 4)) {
		err = vector_pop(vector);
		ASSERT_EQ(err, NO_ERROR);
		err = vector_count(vector, &count);
	}

	ASSERT_EQ(err, NO_ERROR);
	ASSERT_EQ(count, (size_t)4);

	err = vector_remove(vector, 6);
	ASSERT_NE(err, NO_ERROR);

	err = vector_array(vector, (void**)&p_element);
	ASSERT_EQ(err, NO_ERROR);
	ASSERT_TRUE(NULL != p_element);

	element = 0;
	while (element < 4) {
		ASSERT_EQ(*p_element, element);
		p_element++;
		element++;
	}

	err = vector_clear(vector);
	ASSERT_EQ(err, NO_ERROR);

	err = vector_count(vector, &count);
	ASSERT_EQ(err, NO_ERROR);
	ASSERT_EQ(count, (size_t)0);

	err = vector_pop(vector);
	ASSERT_NE(err, NO_ERROR);

	vector_release(vector);
}
Esempio n. 7
0
void fixed_gap_arena_release(FixedGapArena *arena)
{
    for (memi i = 0; i != vector_count(arena->buffers); ++i)
    vector_release(&arena->buffers);
}