Index: head/multimedia/tvheadend/Makefile =================================================================== --- head/multimedia/tvheadend/Makefile (revision 486761) +++ head/multimedia/tvheadend/Makefile (revision 486762) @@ -1,90 +1,90 @@ # Created by: Bernhard Froehlich # $FreeBSD$ PORTNAME= tvheadend PORTVERSION= 4.2.7 DISTVERSIONPREFIX= v -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= multimedia MAINTAINER= decke@FreeBSD.org COMMENT= TV streaming server supporting DVB, IPTV, SAT>IP and more LICENSE= GPLv3 LICENSE_FILE= ${WRKSRC}/LICENSE.md BUILD_DEPENDS= bash:shells/bash \ cmake:devel/cmake \ ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat LIB_DEPENDS= libcurl.so:ftp/curl \ liburiparser.so:net/uriparser RUN_DEPENDS= dtv-scan-tables>=0:multimedia/dtv-scan-tables USES= compiler:c++11-lang gettext gmake pkgconfig python shebangfix ssl USE_GITHUB= yes GNU_CONFIGURE= yes MAKE_JOBS_UNSAFE= yes USE_RC_SUBR= ${PORTNAME} SHEBANG_FILES= ${WRKSRC}/Autobuild.sh \ ${WRKSRC}/configure \ ${WRKSRC}/support/apt-update \ ${WRKSRC}/support/configure.inc \ ${WRKSRC}/support/getmuxlist \ ${WRKSRC}/support/version TVHUSER?= tvheadend TVHGROUP?= tvheadend USERS= ${TVHUSER} GROUPS= ${TVHGROUP} webcamd SUB_LIST+= TVHUSER="${TVHUSER}" \ TVHGROUP="${TVHGROUP}" CONFIGURE_ENV+= PLATFORM=freebsd CONFIGURE_ARGS+=--disable-dvbscan --disable-zlib --disable-hdhomerun_static \ --disable-bintray_cache --disable-ffmpeg_static --disable-pie CFLAGS+= -I${LOCALBASE}/include -Wno-conversion -Wno-int-to-pointer-cast LDFLAGS+= -L${LOCALBASE}/lib -lexecinfo -lssl -lcrypto -lz OPTIONS_DEFINE= AVAHI DVBCSA DVBEN50221 HDHOMERUN INOTIFY TRANSCODING XMLTV OPTIONS_DEFAULT=DVBCSA HDHOMERUN INOTIFY AVAHI_LIB_DEPENDS= libavahi-client.so:net/avahi-app DVBCSA_DESC= Replace internal ffdecsa with dvbcsa DVBCSA_LIB_DEPENDS= libdvbcsa.so:multimedia/libdvbcsa DVBCSA_CONFIGURE_ENABLE= dvbcsa DVBEN50221_DESC= Hardware CAM support DVBEN50221_LIB_DEPENDS= libdvben50221.so:multimedia/dvb-apps DVBEN50221_CONFIGURE_ENABLE= dvben50221 HDHOMERUN_DESC= Native support for HDHomeRun network tuners HDHOMERUN_LIB_DEPENDS= libhdhomerun.so:multimedia/libhdhomerun HDHOMERUN_CONFIGURE_ENABLE= hdhomerun_client INOTIFY_DESC= File system notifications support INOTIFY_LIB_DEPENDS= libinotify.so:devel/libinotify INOTIFY_CONFIGURE_ENABLE= inotify INOTIFY_LDFLAGS= -linotify TRANSCODING_DESC= Transcoding for mobile and web clients TRANSCODING_LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg TRANSCODING_CONFIGURE_ENABLE= libav XMLTV_RUN_DEPENDS= p5-xmltv>=0:textproc/p5-xmltv .include post-patch: @${REINPLACE_CMD} 's|-ldl||' \ ${WRKSRC}/Makefile @${REINPLACE_CMD} 's|-Werror||' \ ${WRKSRC}/Makefile post-install: ${STRIP_CMD} ${STAGEDIR}/${PREFIX}/bin/tvheadend .include Index: head/multimedia/tvheadend/files/patch-src_webui_static_app_epg.js =================================================================== --- head/multimedia/tvheadend/files/patch-src_webui_static_app_epg.js (nonexistent) +++ head/multimedia/tvheadend/files/patch-src_webui_static_app_epg.js (revision 486762) @@ -0,0 +1,44 @@ +From 5363fb5cefbf8f9f0f4d38f81252ce93942665e4 Mon Sep 17 00:00:00 2001 +From: Jongsung Kim +Date: Tue, 20 Nov 2018 17:36:10 +0900 +Subject: [PATCH 2/2] webui: epg: fix compatibility issue for FreeBSD + +The EPG screen serviced by FreeBSD port of tvheadend has two abnormal control +behaviors: + + Reset All button makes the list empty + Typing and then deleting any search string also makes the list empty. + +This patch fixes the symptoms above. + +Patch tested with the latest FreeBSD port of tvheadend-4.2.7. + +Changes since v1: +- call reset only if required +--- + src/webui/static/app/epg.js | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/src/webui/static/app/epg.js b/src/webui/static/app/epg.js +index 2c8b914b2..7337177ef 100644 +--- src/webui/static/app/epg.js ++++ src/webui/static/app/epg.js +@@ -902,10 +902,11 @@ tvheadend.epg = function() { + epgFilterTitle.on('valid', function(c) { + var value = c.getValue(); + +- if (value.length < 1) +- value = null; +- +- if (epgStore.baseParams.title !== value) { ++ if (value.length < 1) { ++ delete epgStore.baseParams.title; ++ epgView.reset(); ++ } ++ else if (epgStore.baseParams.title !== value) { + epgStore.baseParams.title = value; + epgView.reset(); + } +-- +2.19.1 + Property changes on: head/multimedia/tvheadend/files/patch-src_webui_static_app_epg.js ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/multimedia/tvheadend/files/patch-src_webui_webui.c =================================================================== --- head/multimedia/tvheadend/files/patch-src_webui_webui.c (nonexistent) +++ head/multimedia/tvheadend/files/patch-src_webui_webui.c (revision 486762) @@ -0,0 +1,80 @@ +From 411f957733222e24df4ead9fb15332dcb2c116da Mon Sep 17 00:00:00 2001 +From: Jongsung Kim +Date: Tue, 29 May 2018 03:42:04 +0900 +Subject: [PATCH 1/2] webui: fix http_serve_file() for FreeBSD + +This patch fixes two major problems of FreeBSD port of tvheadend: + +1. very high CPU usage while streaming a recored program +2. unable to stream the recorded program beyond 128MB. + +Unlike Linux sendfile(), FreeBSD sendfile() requires an explicit +file offset, and return value must be checked to catch any error +occurred. (i.e., closed connection) + +Patch tested with the latest FreeBSD port of tvheadend-4.2.6. +--- + src/webui/webui.c | 24 +++++++++++++++++------- + 1 file changed, 17 insertions(+), 7 deletions(-) + +diff --git a/src/webui/webui.c b/src/webui/webui.c +index 12b965230..331d998e9 100644 +--- src/webui/webui.c ++++ src/webui/webui.c +@@ -1570,7 +1570,7 @@ http_serve_file(http_connection_t *hc, const char *fname, + #if defined(PLATFORM_LINUX) + ssize_t r; + #elif defined(PLATFORM_FREEBSD) || defined(PLATFORM_DARWIN) +- off_t r; ++ off_t o, r; + #endif + + if (fconv) { +@@ -1631,11 +1631,15 @@ http_serve_file(http_connection_t *hc, const char *fname, + sprintf(range_buf, "bytes %jd-%jd/%jd", + file_start, file_end, (intmax_t)st.st_size); + ++#if defined(PLATFORM_LINUX) + if(file_start > 0) + if (lseek(fd, file_start, SEEK_SET) != file_start) { + close(fd); + return HTTP_STATUS_INTERNAL; + } ++#elif defined(PLATFORM_FREEBSD) || defined(PLATFORM_DARWIN) ++ o = file_start; ++#endif + + if (preop) { + ret = preop(hc, file_start, content_len, opaque); +@@ -1656,16 +1660,22 @@ http_serve_file(http_connection_t *hc, const char *fname, + chunk = MIN(1024 * ((stats ? 128 : 1024) * 1024), content_len); + #if defined(PLATFORM_LINUX) + r = sendfile(hc->hc_fd, fd, NULL, chunk); ++ if (r < 0) { ++ ret = -1; ++ break; ++ } + #elif defined(PLATFORM_FREEBSD) +- sendfile(fd, hc->hc_fd, 0, chunk, NULL, &r, 0); ++ ret = sendfile(fd, hc->hc_fd, o, chunk, NULL, &r, 0); ++ if (ret < 0) ++ break; ++ o += r; + #elif defined(PLATFORM_DARWIN) + r = chunk; +- sendfile(fd, hc->hc_fd, 0, &r, NULL, 0); +-#endif +- if(r < 0) { +- ret = -1; ++ ret = sendfile(fd, hc->hc_fd, o, &r, NULL, 0); ++ if (ret < 0) + break; +- } ++ o += r; ++#endif + content_len -= r; + if (stats) + stats(hc, r, opaque); +-- +2.19.1 + Property changes on: head/multimedia/tvheadend/files/patch-src_webui_webui.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property