[trunk] Rework previous commit r2610
authorMathieu Malaterre <mathieu.malaterre@gmail.com>
Tue, 25 Mar 2014 10:23:40 +0000 (10:23 +0000)
committerMathieu Malaterre <mathieu.malaterre@gmail.com>
Tue, 25 Mar 2014 10:23:40 +0000 (10:23 +0000)
This way we are able to gently deprecate the old API, and preserve ABI
Update issue 306

src/lib/openjp2/cio.c
src/lib/openjp2/openjpeg.c
src/lib/openjp2/openjpeg.h

index f7f1bc72169f1ba51aac4f4de99110bfe607f893..bf91371c25f2a343953046c137c7c1a7df7d5b68 100644 (file)
@@ -246,7 +246,15 @@ void OPJ_CALLCONV opj_stream_set_skip_function(opj_stream_t* p_stream, opj_strea
        l_stream->m_skip_fn = p_function;
 }
 
-void OPJ_CALLCONV opj_stream_set_user_data(opj_stream_t* p_stream, void * p_data, opj_stream_free_user_data_fn p_function)
+void OPJ_CALLCONV opj_stream_set_user_data(opj_stream_t* p_stream, void * p_data)
+{
+       opj_stream_private_t* l_stream = (opj_stream_private_t*) p_stream;
+       if (!l_stream)
+               return;
+       l_stream->m_user_data = p_data;
+}
+
+void OPJ_CALLCONV opj_stream_set_user_data_v3(opj_stream_t* p_stream, void * p_data, opj_stream_free_user_data_fn p_function)
 {
        opj_stream_private_t* l_stream = (opj_stream_private_t*) p_stream;
        if (!l_stream)
index 0522acb00b45fe287d715a011f0901e7ead0f152..dfb8093c4133bc327277a98a10a74fe7c9cc7112 100644 (file)
@@ -944,7 +944,7 @@ opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream_v3 (
         return NULL;
     }
 
-    opj_stream_set_user_data(l_stream, p_file, (opj_stream_free_user_data_fn) fclose);
+    opj_stream_set_user_data_v3(l_stream, p_file, (opj_stream_free_user_data_fn) fclose);
     opj_stream_set_user_data_length(l_stream, opj_get_data_length_from_file(p_file));
     opj_stream_set_read_function(l_stream, (opj_stream_read_fn) opj_read_from_file);
     opj_stream_set_write_function(l_stream, (opj_stream_write_fn) opj_write_from_file);
index 1ea2af80187e32d51a43254973656b991db2c252..466d07fdc951ff5f315010f940e236fa47825195 100644 (file)
@@ -1067,13 +1067,21 @@ OPJ_API void OPJ_CALLCONV opj_stream_set_skip_function(opj_stream_t* p_stream, o
 */
 OPJ_API void OPJ_CALLCONV opj_stream_set_seek_function(opj_stream_t* p_stream, opj_stream_seek_fn p_function);
 
+/**
+ * Sets the given data to be used as a user data for the stream.
+ * @param              p_stream        the stream to modify
+ * @param              p_data          the data to set.
+ * @warning depending on your source object p_stream this function may leak, use opj_stream_set_user_data_v3
+*/
+OPJ_DEPRECATED(OPJ_API void OPJ_CALLCONV opj_stream_set_user_data (opj_stream_t* p_stream, void * p_data));
+
 /**
  * Sets the given data to be used as a user data for the stream.
  * @param              p_stream        the stream to modify
  * @param              p_data          the data to set.
  * @param              p_function      the function to free p_data when opj_stream_destroy() is called.
 */
-OPJ_API void OPJ_CALLCONV opj_stream_set_user_data (opj_stream_t* p_stream, void * p_data, opj_stream_free_user_data_fn p_function);
+OPJ_API void OPJ_CALLCONV opj_stream_set_user_data_v3 (opj_stream_t* p_stream, void * p_data, opj_stream_free_user_data_fn p_function);
 
 /**
  * Sets the length of the user data for the stream.