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
if (size)
*size = mem->size;
if (maxsize)
- *maxsize = mem->maxsize;
+ *maxsize = mem->maxsize - mem->offset;
return mem->data + mem->offset;
}
_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;
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);
}