Commit 6e0024e7 authored by Wim Taymans's avatar Wim Taymans

memory: take offset into account

Take the offset into account whem mapping and unmapping the buffer.
parent cff9b371
......@@ -127,7 +127,7 @@ Data Access
When the final reference on a memory object is dropped, all outstanding
mappings are automatically unmapped.
Resizing a GstMemory does not influence any current mappings.
Resizing a GstMemory does not influence any current mappings an any way.
Copy
......
......@@ -206,7 +206,7 @@ _default_mem_map (GstMemoryDefault * mem, gsize * size, gsize * maxsize,
if (size)
*size = mem->size;
if (maxsize)
*maxsize = mem->maxsize;
*maxsize = mem->maxsize - mem->offset;
return mem->data + mem->offset;
}
......@@ -215,7 +215,7 @@ static gboolean
_default_mem_unmap (GstMemoryDefault * mem, gpointer data, gsize size)
{
if (size != -1) {
g_return_val_if_fail (size <= mem->maxsize, FALSE);
g_return_val_if_fail (mem->offset + size <= mem->maxsize, FALSE);
mem->size = size;
}
return TRUE;
......
......@@ -421,6 +421,16 @@ GST_START_TEST (test_map)
ASSERT_CRITICAL (gst_memory_unmap (mem, data, maxsize + 1));
gst_memory_unmap (mem, data, maxsize);
/* add offset, maxsize should be smaller now */
gst_memory_resize (mem, 1, 99);
data = gst_memory_map (mem, &size, &maxsize, GST_MAP_READ);
fail_unless (data != NULL);
fail_unless (size == 99);
fail_unless (maxsize == maxalloc - 1);
ASSERT_CRITICAL (gst_memory_unmap (mem, data, maxsize + 1));
gst_memory_unmap (mem, data, maxsize);
gst_memory_unref (mem);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment