diff options
author | Luo Jinghua <sunmoon1997@gmail.com> | 2009-09-11 23:26:56 +0800 |
---|---|---|
committer | Luo Jinghua <sunmoon1997@gmail.com> | 2009-09-11 23:26:56 +0800 |
commit | cb82f0032d22ce8ff75b456929361eee56cdbe3c (patch) | |
tree | 714b20d97de0cd081ee839c223995dbe3b4b160c | |
parent | 02c174375d452f6da3ccbe22680de2b184e1680a (diff) |
wrapper: cleanup libpps on closing client
-rw-r--r-- | wrapper/ppswrapper-server.c | 12 | ||||
-rw-r--r-- | wrapper/ppswrapper.h | 2 |
2 files changed, 14 insertions, 0 deletions
diff --git a/wrapper/ppswrapper-server.c b/wrapper/ppswrapper-server.c index 2ac70ae..8304701 100644 --- a/wrapper/ppswrapper-server.c +++ b/wrapper/ppswrapper-server.c @@ -75,6 +75,7 @@ ppsw_server_create(int fd, int port) self->bufs = NULL; self->play_reqs = NULL; + self->created = 0; server = self; return &self->base; @@ -628,6 +629,8 @@ process_create(ppsw_server_t* self, //printf ("ppsvod_create(%s, %s, %s)\n", oem_name, terminal_type, device_id); ret = ppsvod_create(oem_name, terminal_type, device_id, ppsw_callback); + if (ret == 0) + self->created = 1; free (oem_name); free (terminal_type); @@ -643,7 +646,10 @@ process_destroy(ppsw_server_t* self, int ret; //printf ("pps_vode_destroy\n"); + if (!self->created) + return send_reply(self, msg->seq, -1); ret = ppsvod_destroy(); + self->created = 0; return send_reply(self, msg->seq, ret); } @@ -1270,6 +1276,12 @@ ppsw_server_run(ppsw_t* super, int infinit) ppsw_server_clear_play_requests (self); close(self->base.sock); + + if (self->created) { + ppsvod_destroy (); + self->created = 0; + } + self->base.sock = -1; self->base.seq = 0; diff --git a/wrapper/ppswrapper.h b/wrapper/ppswrapper.h index 2d6f5a8..6bc920f 100644 --- a/wrapper/ppswrapper.h +++ b/wrapper/ppswrapper.h @@ -200,6 +200,8 @@ typedef struct { int srv_sock; int done; + int created; + pthread_mutex_t mutex; pthread_mutex_t bufmutex; pthread_mutex_t play_queue_mutex; |