]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
SAT>IP: Remove double teardown workaround (wasn't working)
authorJaroslav Kysela <perex@perex.cz>
Tue, 13 Jan 2015 15:38:20 +0000 (16:38 +0100)
committerJaroslav Kysela <perex@perex.cz>
Tue, 13 Jan 2015 15:38:20 +0000 (16:38 +0100)
src/input/mpegts/satip/satip.c
src/input/mpegts/satip/satip_frontend.c
src/input/mpegts/satip/satip_private.h

index ef5c75fcf8dde0c43a8bf65c1827e359db76cfc5..9962c424603b509ae5c0ba46871f64a82b880da9 100644 (file)
@@ -180,13 +180,6 @@ const idclass_t satip_device_class =
       .opts     = PO_ADVANCED,
       .off      = offsetof(satip_device_t, sd_pids0),
     },
-    {
-      .type     = PT_BOOL,
-      .id       = "shutdown2",
-      .name     = "Double RTSP Shutdown",
-      .opts     = PO_ADVANCED,
-      .off      = offsetof(satip_device_t, sd_shutdown2),
-    },
     {
       .type     = PT_BOOL,
       .id       = "piloton",
index 0f7478522fb64ead134dc0c3289f00efaf7ca96b..ba8f5d09e26c340aca7d33405b4469fbfe88e9a3 100644 (file)
@@ -1072,8 +1072,7 @@ done:
 }
 
 static void
-satip_frontend_shutdown1 ( http_client_t *rtsp, tvhpoll_t *efd,
-                           int shutdown2, int timeout )
+satip_frontend_shutdown ( http_client_t *rtsp, tvhpoll_t *efd )
 {
   char b[32];
   tvhpoll_event_t ev;
@@ -1091,7 +1090,7 @@ satip_frontend_shutdown1 ( http_client_t *rtsp, tvhpoll_t *efd,
       r = http_client_run(rtsp);
       if (r != HTTP_CON_RECEIVING && r != HTTP_CON_SENDING)
         break;
-      nfds = tvhpoll_wait(efd, &ev, 1, timeout);
+      nfds = tvhpoll_wait(efd, &ev, 1, 400);
       if (nfds == 0)
         break;
       if (nfds < 0) {
@@ -1105,15 +1104,6 @@ satip_frontend_shutdown1 ( http_client_t *rtsp, tvhpoll_t *efd,
   }
 }
 
-static void
-satip_frontend_shutdown
-  ( satip_frontend_t *lfe, http_client_t *rtsp, tvhpoll_t *efd, int shutdown2 )
-{
-  satip_frontend_shutdown1(rtsp, efd, shutdown2, 250);
-  if (shutdown2)
-    satip_frontend_shutdown1(rtsp, efd, shutdown2, 50);
-}
-
 static void
 satip_frontend_tuning_error ( satip_frontend_t *lfe, satip_tune_req_t *tr )
 {
@@ -1188,7 +1178,21 @@ new_tune:
 
     if (!tvheadend_running) { exit_flag = 1; goto done; }
     if (rtsp && nfds == 0) {
-      satip_frontend_shutdown(lfe, rtsp, efd, lfe->sf_device->sd_shutdown2);
+
+      memset(ev, 0, sizeof(ev));
+      ev[0].events             = TVHPOLL_IN;
+      ev[0].fd                 = lfe->sf_dvr_pipe.rd;
+      ev[0].data.ptr           = NULL;
+      tvhpoll_rem(efd, ev, 1);
+
+      satip_frontend_shutdown(rtsp, efd);
+
+      memset(ev, 0, sizeof(ev));
+      ev[0].events             = TVHPOLL_IN;
+      ev[0].fd                 = lfe->sf_dvr_pipe.rd;
+      ev[0].data.ptr           = NULL;
+      tvhpoll_add(efd, ev, 1);
+
       http_client_close(rtsp);
       rtsp = NULL;
     }
@@ -1604,7 +1608,7 @@ new_tune:
   tvhpoll_rem(efd, ev, 3);
 
   if (exit_flag) {
-    satip_frontend_shutdown(lfe, rtsp, efd, lfe->sf_device->sd_shutdown2);
+    satip_frontend_shutdown(rtsp, efd);
     http_client_close(rtsp);
     rtsp = NULL;
   }
index b791ea388e345ae9e54590f953c80afb1ab570b6..43cc1ff62a6c2336e7c11edbfd86c60df6216a5a 100644 (file)
@@ -82,7 +82,6 @@ struct satip_device
   int                        sd_sig_scale;
   int                        sd_pids0;
   int                        sd_pilot_on;
-  int                        sd_shutdown2;
   int                        sd_dbus_allow;
   pthread_mutex_t            sd_tune_mutex;
 };