client API: rename mpv_destroy() to mpv_detach_destroy()

A bit verbose, but less misleading. In most cases, the API user probably
actually wants mpv_terminate_destroy() instead, so the less-useful
function shouldn't have a simnpler name anyway.
This commit is contained in:
wm4 2014-06-07 20:25:48 +02:00
parent 0b9468f65f
commit fca608ccb9
4 changed files with 21 additions and 22 deletions

View File

@ -39,6 +39,6 @@ int main(int argc, char *argv[])
break;
}
mpv_destroy(ctx);
mpv_terminate_destroy(ctx);
return 0;
}

View File

@ -252,8 +252,8 @@ void mpv_free(void *data);
* Return the name of this client handle. Every client has its own unique
* name, which is mostly used for user interface purposes.
*
* @return The client name. The string is read-only and is valid until
* mpv_destroy() is called.
* @return The client name. The string is read-only and is valid until the
* mpv_handle is destroyed.
*/
const char *mpv_client_name(mpv_handle *ctx);
@ -313,27 +313,27 @@ mpv_handle *mpv_create(void);
int mpv_initialize(mpv_handle *ctx);
/**
* Disconnect and destroy the client context. ctx will be deallocated with this
* Disconnect and destroy the mpv_handle. ctx will be deallocated with this
* API call. This leaves the player running. If you want to be sure that the
* player is terminated, send a "quit" command, and wait until the
* MPV_EVENT_SHUTDOWN event is received, or use mpv_terminate_destroy().
*/
void mpv_destroy(mpv_handle *ctx);
void mpv_detach_destroy(mpv_handle *ctx);
/**
* Similar to mpv_destroy(), but brings the player and all clients down as well,
* and waits until all of them are destroyed. This function blocks. The
* advantage over mpv_destroy() is that while mpv_destroy() merely detaches
* the client handle from the player, this function quits the player, waits
* until all other clients are destroyed (i.e. all mpv_handles are detached),
* and also waits for the final termination of the player.
* Similar to mpv_detach_destroy(), but brings the player and all clients down
* as well, and waits until all of them are destroyed. This function blocks. The
* advantage over mpv_detach_destroy() is that while mpv_detach_destroy() merely
* detaches the client handle from the player, this function quits the player,
* waits until all other clients are destroyed (i.e. all mpv_handles are
* detached), and also waits for the final termination of the player.
*
* Since mpv_destroy() is called somewhere on the way, it's not safe to call
* other functions concurrently on the same context.
* Since mpv_detach_destroy() is called somewhere on the way, it's not safe to
* call other functions concurrently on the same context.
*
* If this is called on a mpv_handle that was not created with mpv_create(),
* this function will merely send a quit command and then call mpv_destroy(),
* without waiting for the actual shutdown.
* this function will merely send a quit command and then call
* mpv_detach_destroy(), without waiting for the actual shutdown.
*/
void mpv_terminate_destroy(mpv_handle *ctx);
@ -836,7 +836,7 @@ typedef enum mpv_event_id {
* to disconnect all clients. Most requests to the player will fail, and
* mpv_wait_event() will always return instantly (returning new shutdown
* events if no other events are queued). The client should react to this
* and quit with mpv_destroy() as soon as possible.
* and quit with mpv_detach_destroy() as soon as possible.
*/
MPV_EVENT_SHUTDOWN = 1,
/**
@ -1148,7 +1148,7 @@ int mpv_request_log_messages(mpv_handle *ctx, const char *min_level);
* will wait with an infinite timeout.
* @return A struct containing the event ID and other data. The pointer (and
* fields in the struct) stay valid until the next mpv_wait_event()
* call, or until mpv_destroy() is called. You must not write to
* call, or until the mpv_handle is destroyed. You must not write to
* the struct, and all memory referenced by it will be automatically
* released by the API. The return value is never NULL.
*/

View File

@ -255,7 +255,7 @@ static void unlock_core(mpv_handle *ctx)
mp_dispatch_unlock(ctx->mpctx->dispatch);
}
void mpv_destroy(mpv_handle *ctx)
void mpv_detach_destroy(mpv_handle *ctx)
{
if (!ctx)
return;
@ -292,7 +292,6 @@ void mpv_destroy(mpv_handle *ctx)
// shutdown_clients() sleeps to avoid wasting CPU
if (clients->mpctx->input)
mp_input_wakeup(clients->mpctx->input);
// TODO: make core quit if there are no clients
break;
}
}
@ -310,7 +309,7 @@ void mpv_terminate_destroy(mpv_handle *ctx)
mpv_command(ctx, (const char*[]){"quit", NULL});
if (!ctx->owner) {
mpv_destroy(ctx);
mpv_detach_destroy(ctx);
return;
}
@ -322,7 +321,7 @@ void mpv_terminate_destroy(mpv_handle *ctx)
pthread_t playthread;
mp_dispatch_run(ctx->mpctx->dispatch, get_thread, &playthread);
mpv_destroy(ctx);
mpv_detach_destroy(ctx);
// And this is also the reason why we only allow 1 thread (the owner) to
// call this function.

View File

@ -84,7 +84,7 @@ static void *script_thread(void *p)
mp_verbose(log, "Exiting...\n");
mpv_destroy(arg->client);
mpv_detach_destroy(arg->client);
talloc_free(arg);
return NULL;
}