mirror of
https://github.com/clangen/musikcube.git
synced 2025-02-19 06:40:34 +00:00
Seems to be compiling and linking properly, and we are able to get a
context up. It crashes or deadlocks on release. Nothing else tested, but promising progress.
This commit is contained in:
parent
149ee87dca
commit
dc340265e3
@ -94,6 +94,7 @@ endif()
|
|||||||
|
|
||||||
add_subdirectory(src/core)
|
add_subdirectory(src/core)
|
||||||
add_subdirectory(src/core_c)
|
add_subdirectory(src/core_c)
|
||||||
|
add_subdirectory(src/core_c_demo)
|
||||||
add_subdirectory(src/musikcube)
|
add_subdirectory(src/musikcube)
|
||||||
add_subdirectory(src/musikcubed)
|
add_subdirectory(src/musikcubed)
|
||||||
add_subdirectory(src/plugins/taglib_plugin)
|
add_subdirectory(src/plugins/taglib_plugin)
|
||||||
|
@ -8,6 +8,8 @@ include_directories(
|
|||||||
..
|
..
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_definitions(-DDEFINE_EXPORTS)
|
||||||
|
|
||||||
add_library(musikcore_c SHARED ${CORE_C_SOURCES})
|
add_library(musikcore_c SHARED ${CORE_C_SOURCES})
|
||||||
|
|
||||||
set_target_properties(musikcore_c PROPERTIES
|
set_target_properties(musikcore_c PROPERTIES
|
||||||
|
@ -185,11 +185,11 @@ mcsdk_export void mcsdk_context_release(mcsdk_context** context) {
|
|||||||
delete internal->playback;
|
delete internal->playback;
|
||||||
internal->playback = nullptr;
|
internal->playback = nullptr;
|
||||||
internal->library->Indexer()->Stop();
|
internal->library->Indexer()->Stop();
|
||||||
internal->message_queue.SignalQuit();
|
|
||||||
internal->thread.join();
|
|
||||||
internal->library.reset();
|
internal->library.reset();
|
||||||
internal->preferences.reset();
|
internal->preferences.reset();
|
||||||
delete internal->metadata;
|
delete internal->metadata;
|
||||||
|
internal->message_queue.SignalQuit();
|
||||||
|
internal->thread.join();
|
||||||
delete internal;
|
delete internal;
|
||||||
delete c;
|
delete c;
|
||||||
if (plugin_context == c) {
|
if (plugin_context == c) {
|
||||||
|
@ -37,12 +37,17 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef DEFINE_EXPORTS
|
||||||
#define mcsdk_export extern "C" __declspec(dllexport)
|
#ifdef WIN32
|
||||||
|
#define mcsdk_export extern "C" __declspec(dllexport)
|
||||||
|
#else
|
||||||
|
#define mcsdk_export extern "C"
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
#define mcsdk_export extern "C"
|
#define mcsdk_export extern
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -59,14 +64,14 @@ static const int mcsdk_version = 18;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
enum mcsdk_playback_state {
|
typedef enum mcsdk_playback_state {
|
||||||
mcsdk_playback_stopped = 1,
|
mcsdk_playback_stopped = 1,
|
||||||
mcsdk_playback_paused = 2,
|
mcsdk_playback_paused = 2,
|
||||||
mcsdk_playback_prepared = 3,
|
mcsdk_playback_prepared = 3,
|
||||||
mcsdk_playback_playing = 4,
|
mcsdk_playback_playing = 4,
|
||||||
};
|
} mcsdk_playback_state;
|
||||||
|
|
||||||
enum mcsdk_stream_event {
|
typedef enum mcsdk_stream_event {
|
||||||
mcsdk_stream_scheduled = 1,
|
mcsdk_stream_scheduled = 1,
|
||||||
mcsdk_stream_prepared = 2,
|
mcsdk_stream_prepared = 2,
|
||||||
mcsdk_stream_playing = 3,
|
mcsdk_stream_playing = 3,
|
||||||
@ -74,64 +79,64 @@ enum mcsdk_stream_event {
|
|||||||
mcsdk_stream_finished = 5,
|
mcsdk_stream_finished = 5,
|
||||||
mcsdk_stream_stopped = 6,
|
mcsdk_stream_stopped = 6,
|
||||||
mcsdk_stream_error = -1
|
mcsdk_stream_error = -1
|
||||||
};
|
} mcsdk_stream_event;
|
||||||
|
|
||||||
enum mcsdk_repeat_mode {
|
typedef enum mcsdk_repeat_mode {
|
||||||
mcsdk_repeat_none = 0,
|
mcsdk_repeat_none = 0,
|
||||||
mcsdk_repeat_track = 1,
|
mcsdk_repeat_track = 1,
|
||||||
mcsdk_repeat_list = 2
|
mcsdk_repeat_list = 2
|
||||||
};
|
} mcsdk_repeat_mode;
|
||||||
|
|
||||||
enum mcsdk_output_code {
|
typedef enum mcsdk_output_code {
|
||||||
mcsdk_output_error_invalid_format = -4,
|
mcsdk_output_error_invalid_format = -4,
|
||||||
mcsdk_output_error_invalid_state = -3,
|
mcsdk_output_error_invalid_state = -3,
|
||||||
mcsdk_output_error_buffer_full = -2,
|
mcsdk_output_error_buffer_full = -2,
|
||||||
mcsdk_output_error_buffer_written = -1
|
mcsdk_output_error_buffer_written = -1
|
||||||
};
|
} mcsdk_output_code;
|
||||||
|
|
||||||
enum mcsdk_time_change_mode {
|
typedef enum mcsdk_time_change_mode {
|
||||||
mcsdk_time_change_mode_seek = 0,
|
mcsdk_time_change_mode_seek = 0,
|
||||||
mcsdk_time_change_mode_scrub = 1
|
mcsdk_time_change_mode_scrub = 1
|
||||||
};
|
} mcsdk_time_change_mode;
|
||||||
|
|
||||||
enum mcsdk_path_type {
|
typedef enum mcsdk_path_type {
|
||||||
mcsdk_path_user_home = 0,
|
mcsdk_path_user_home = 0,
|
||||||
mcsdk_path_data = 1,
|
mcsdk_path_data = 1,
|
||||||
mcsdk_path_application = 2,
|
mcsdk_path_application = 2,
|
||||||
mcsdk_path_plugins = 3,
|
mcsdk_path_plugins = 3,
|
||||||
mcsdk_path_library = 4
|
mcsdk_path_library = 4
|
||||||
};
|
} mcsdk_path_type;
|
||||||
|
|
||||||
enum mcsdk_stream_capability {
|
typedef enum mcsdk_stream_capability {
|
||||||
mcsdk_stream_capability_prebuffer = 0x01
|
mcsdk_stream_capability_prebuffer = 0x01
|
||||||
};
|
} mcsdk_stream_capability;
|
||||||
|
|
||||||
enum mcsdk_indexer_scan_result {
|
typedef enum mcsdk_indexer_scan_result {
|
||||||
mcsdk_indexer_scan_result_commit = 1,
|
mcsdk_indexer_scan_result_commit = 1,
|
||||||
mcsdk_indexer_scan_result_rollback = 2
|
mcsdk_indexer_scan_result_rollback = 2
|
||||||
};
|
} mcsdk_indexer_scan_result;
|
||||||
|
|
||||||
enum class mcsdk_replay_gain_mode {
|
typedef enum mcsdk_replay_gain_mode {
|
||||||
mcsdk_replay_gain_mode_disabled = 0,
|
mcsdk_replay_gain_mode_disabled = 0,
|
||||||
mcsdk_replay_gain_mode_track = 1,
|
mcsdk_replay_gain_mode_track = 1,
|
||||||
mcsdk_replay_gain_mode_album = 2
|
mcsdk_replay_gain_mode_album = 2
|
||||||
};
|
} mcsdk_replay_gain_mode;
|
||||||
|
|
||||||
enum class mcsdk_transport_type {
|
typedef enum mcsdk_transport_type {
|
||||||
mcsdk_transport_type_gapless = 0,
|
mcsdk_transport_type_gapless = 0,
|
||||||
mcsdk_transport_type_crossfade = 1
|
mcsdk_transport_type_crossfade = 1
|
||||||
};
|
} mcsdk_transport_type;
|
||||||
|
|
||||||
enum mcsdk_stream_open_flags {
|
typedef enum mcsdk_stream_open_flags {
|
||||||
mcsdk_stream_open_flags_none = 0,
|
mcsdk_stream_open_flags_none = 0,
|
||||||
mcsdk_stream_open_flags_read = 1,
|
mcsdk_stream_open_flags_read = 1,
|
||||||
mcsdk_stream_open_flags_write = 2
|
mcsdk_stream_open_flags_write = 2
|
||||||
};
|
} mcsdk_stream_open_flags;
|
||||||
|
|
||||||
enum mcsdk_resource_class {
|
typedef enum mcsdk_resource_class {
|
||||||
mcsdk_resource_type_value = 0,
|
mcsdk_resource_type_value = 0,
|
||||||
mcsdk_resource_type_map = 1
|
mcsdk_resource_type_map = 1
|
||||||
};
|
} mcsdk_resource_class;
|
||||||
|
|
||||||
static const size_t mcsdk_equalizer_band_count = 18;
|
static const size_t mcsdk_equalizer_band_count = 18;
|
||||||
|
|
||||||
@ -177,18 +182,18 @@ static const char* mcsdk_track_field_external_id = "external_id";
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
mcsdk_export typedef void* mcsdk_handle;
|
typedef void* mcsdk_handle;
|
||||||
mcsdk_export typedef mcsdk_handle mcsdk_resource;
|
typedef mcsdk_handle mcsdk_resource;
|
||||||
mcsdk_export typedef mcsdk_handle mcsdk_value;
|
typedef mcsdk_handle mcsdk_value;
|
||||||
mcsdk_export typedef mcsdk_handle mcsdk_value_list;
|
typedef mcsdk_handle mcsdk_value_list;
|
||||||
mcsdk_export typedef mcsdk_handle mcsdk_map;
|
typedef mcsdk_handle mcsdk_map;
|
||||||
mcsdk_export typedef mcsdk_handle mcsdk_track;
|
typedef mcsdk_handle mcsdk_track;
|
||||||
mcsdk_export typedef mcsdk_handle mcsdk_map_list;
|
typedef mcsdk_handle mcsdk_map_list;
|
||||||
mcsdk_export typedef mcsdk_handle mcsdk_track_list;
|
typedef mcsdk_handle mcsdk_track_list;
|
||||||
mcsdk_export typedef mcsdk_handle mcsdk_track_list_editor;
|
typedef mcsdk_handle mcsdk_track_list_editor;
|
||||||
mcsdk_export typedef mcsdk_handle mcsdk_svc_metadata;
|
typedef mcsdk_handle mcsdk_svc_metadata;
|
||||||
mcsdk_export typedef mcsdk_handle mcsdk_svc_playback;
|
typedef mcsdk_handle mcsdk_svc_playback;
|
||||||
mcsdk_export typedef mcsdk_handle mcsdk_preferences;
|
typedef mcsdk_handle mcsdk_preferences;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
@ -196,12 +201,12 @@ mcsdk_export typedef mcsdk_handle mcsdk_preferences;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct mcsdk_context {
|
typedef struct mcsdk_context {
|
||||||
mcsdk_svc_metadata metadata;
|
mcsdk_svc_metadata metadata;
|
||||||
mcsdk_svc_playback playback;
|
mcsdk_svc_playback playback;
|
||||||
mcsdk_preferences preferences;
|
mcsdk_preferences preferences;
|
||||||
mcsdk_handle internal;
|
mcsdk_handle internal;
|
||||||
};
|
} mcsdk_context;
|
||||||
|
|
||||||
mcsdk_export void mcsdk_context_init(mcsdk_context** context);
|
mcsdk_export void mcsdk_context_init(mcsdk_context** context);
|
||||||
mcsdk_export void mcsdk_context_release(mcsdk_context** context);
|
mcsdk_export void mcsdk_context_release(mcsdk_context** context);
|
||||||
|
19
src/core_c_demo/CMakeLists.txt
Normal file
19
src/core_c_demo/CMakeLists.txt
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
set (CORE_C_DEMO_SRCS
|
||||||
|
./main.c
|
||||||
|
)
|
||||||
|
|
||||||
|
set(musikcube_INSTALL_DIR ${HOMEBREW_PREFIX})
|
||||||
|
if (NOT DEFINED musikcube_INSTALL_DIR)
|
||||||
|
set(musikcube_INSTALL_DIR ${CMAKE_INSTALL_PREFIX})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_executable(core_c_demo ${CORE_C_DEMO_SRCS})
|
||||||
|
|
||||||
|
set_target_properties(core_c_demo PROPERTIES LINK_FLAGS "-Wl,-rpath,./")
|
||||||
|
|
||||||
|
if (${LINK_STATICALLY} MATCHES "true")
|
||||||
|
find_library(EVLIB NAMES libev.a ev)
|
||||||
|
target_link_libraries(core_c_demo ${musikcube_LINK_LIBS} ${EVLIB} musikcore musikcore_c)
|
||||||
|
else()
|
||||||
|
target_link_libraries(core_c_demo ${musikcube_LINK_LIBS} musikcore musikcore_c ev)
|
||||||
|
endif()
|
14
src/core_c_demo/main.c
Normal file
14
src/core_c_demo/main.c
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <core_c/musikcore_c.h>
|
||||||
|
|
||||||
|
int main(int argc, char** argv) {
|
||||||
|
mcsdk_context* context = NULL;
|
||||||
|
mcsdk_context_init(&context);
|
||||||
|
if (context) {
|
||||||
|
printf("omg");
|
||||||
|
}
|
||||||
|
|
||||||
|
mcsdk_context_release(&context);
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user