From ebe5b4bfcfae015c5f0108bf71fdcffed4d3ab82 Mon Sep 17 00:00:00 2001 From: markmental Date: Sat, 28 Mar 2026 13:57:42 -0400 Subject: [PATCH] Add channel switching delay so stream settles before switching --- src/app.c | 10 +++++++++- src/app.h | 1 + src/app.o | Bin 15400 -> 15480 bytes 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/app.c b/src/app.c index 15bc799..e7e60df 100644 --- a/src/app.c +++ b/src/app.c @@ -12,7 +12,8 @@ #define GUIDE_BROWSE_STEP_MINUTES 30 #define GUIDE_BROWSE_MAX_AHEAD_MINUTES (12 * 60) #define GUIDE_BROWSE_MAX_OFFSET_MINUTES (GUIDE_BROWSE_MAX_AHEAD_MINUTES - ((int) (TIMELINE_VISIBLE_SECONDS / 60.0) - 30)) -#define CHANNEL_BANNER_DURATION_MS 3000 +#define CHANNEL_BANNER_DURATION_MS 5000 +#define CHANNEL_SWITCH_LOCK_DURATION_MS 7000 static void configure_runtime_environment(void) { char runtime_dir[64]; @@ -127,11 +128,18 @@ static int update_video_texture(App *app) { static void tune_relative(App *app, int delta) { int next_index; + Uint32 now; if (app->channels.count == 0) { return; } + now = SDL_GetTicks(); + if (now < app->channel_switch_lock_until) { + return; + } + app->channel_switch_lock_until = now + CHANNEL_SWITCH_LOCK_DURATION_MS; + next_index = app->player.current_index; if (next_index < 0) { next_index = 0; diff --git a/src/app.h b/src/app.h index 8e4239b..aaa871e 100644 --- a/src/app.h +++ b/src/app.h @@ -25,6 +25,7 @@ typedef struct App { int last_blackout_state; Uint32 startup_handoff_until; Uint32 channel_banner_until; + Uint32 channel_switch_lock_until; time_t app_start_time; Uint64 app_start_ticks; int guide_time_offset_minutes; diff --git a/src/app.o b/src/app.o index 8688f4249f1aab05ce7657445d8be2f60b97d2f9..50a7b99ea2d80a16d969e159a8da9953ae9c42a5 100644 GIT binary patch delta 3521 zcmZ{m4Qx}_702&&J{^c(3=uCcA&Cv4G5I!4h?77P&(7i$21_X&Ti1bU*OjrBq=bnI zG@99_@!X1rGpWq>E@kt{9d`T z)GOWpyYK%y=iCq3@4X{?Q+uEA*nGapx;tg}=J;ouLh&1+$koCt0$W#L{q6;!$eV?C z-F-@{?iG1kDunQ!O{^OVCH9rX1M3r!BRN9ErnS&Xc?DjSz0R@4Lc{~1n@NzCQ*swf z*(&8=@?BfAw2duJ7Uu?RMZrXWO&{h)&%u`b74ivqB)_w8w=WT_X^mZnllfoDy~z^= zWAeZ+a)r=aO19iV^o|)j=U<12wdf z`CMeQgT%U)*xbkqYX^ns)uQ>BsvRoh!WAQ>k<|7PEs`qMVsC$yPA3Ab@j%0Dpk*Of zIE9v0E#S2M)y1c6l=nl_wHvvR%z@t)Ev>wUPG;V&N@VCYN_Qc2@iK zbUfgiZ{vsnR>I@+;LQ|HB&gDjPq5Mw#+$If**yib0T)5s2<>Aw;G?_wPg3S##pYA+ zcyU#54vkQvD-=s>(GxfhCU$zJWQh=cu@CpGtH)cJ79m8dvh8nngLu zbgk1S*MqZ8HxlL{(;0iP<71E8aq!pa@^y|mXU5>;PSBsgit)g3oes~{6~f-S5;*`9 zm@!D6+(~-4J_E);*6YTTl#Puhs>f~>`8{~+b$JZJsDC6iX3R*sIF-mb7)SbdrB0(l zFTo7b4;0$0&{DXD)W8#_Mr)vllC_2=a5w129SU8g(4W8{(p?I@RiVFv(FXkhy%(ub zeAaVlRWKq-?gAw@0cWuOZ&;6#8Yh%UU5T8fS&ILr&H@iK>F{FXLgNd? zrRS}+69LznbfX{-Eo`*zGVB(0!VFTcNvVXI>*L%WCD%}L2RL`|8*;aB?p7tYT*=)* zxpFtf$S6!U>oN|`7F{0Ztml<1dJkEvJ;E`^IqOg0$N0an^A2ZSRYQv7>CdUg2{>wDn!;y*!&>{cQ_gRoaWAn9d_jq1CxTPt5^`c%J1 z@o!Q5Ud6vn@zux2e#Q4I@y}*__}uF>-d17)O3Zn1uhNa&LbR~aO8T%{D|EpiQjbEL z6zYRfq`MSatI%Re?of%IXcz{OKA_Oe3f%{zNXHcVJ%v6FlWn?$ delta 3466 zcmZ{m4Qx}_702&&KCnaLXP1`imq6^0WEc`BI1rpTK;qdMW+Tng(3L9fNXi<~Qf)*e z5-pmt)G;M>JCYs5*wi7YCJ~`BEizRL+9HR~vH>Moy9!omiN-b}wG+{3>vnA3xhKzX zWvN$s|99X2ch0%@UB7pqlY2(@47*LYePb)X$17v4yP}u-Eax=mAd~HJ?^Jtu=s)4e zC+65IqgjlFWBs;hLJObecVL`1EqZq$V?)7kIC9?H@$|WF%^6~#nZ|iPTr(}@UGYy$ z)!g*%!uZncpvfF-EsI{(2G7Iux#d}!lfiJV-`rjo3ze;jPQg^}SG+TRb-{k#-<{2v zcEHOSizK_W!92Qr3x|&+E!yCR)G5-UuK%V|k-aXi4ZeU8G&s8yERz$T%|@mOE+F

fPgxxS zt1VzPuR}BpErpHN>oN-4tpzA8@XNww{D<)S!hOqp+-g2|@ygX}?+2{YJhEV4?rS-( zXa6+o0Ny)u;4uo%7FEOHqFojm2^|mEmsE2<1eOTB5w97`VTE*lAR*{Mx`~V&=6?XF z_b41g+HTOi47wF2kv?tE7c=N~;7f)6oI&Fm^he-D+Go&zWzfCQh4d!|?arW47(x1~ zLFY$!5HbuCNDmqGwFiKDZ@?VVH>sb?k{NUqN{WU48*+2l=Na@Av>`oXH-G(jSoak?towL^?`(iu9~h79?~+=eXPMwdq}8O~B<&#GNjgA!SgQV8+^FPyn003(1z$|+CiO~%JEfIST6Poi%8T;bLz}m4e71MXbK7_Bj+d1$ z%8J*yZ6^LAjI0#=P3T%FyvL1&mg~Gi-oD(vu>HaCV)J<8xPQR z2k8zdsc^#93Y-3lOv5ItR^XA&J_G|5f**x3)Du$mF(Xo*>`LTmm_hoUQpcmvNw8N6 z{iZ^z6`BnJq!wII+2kDL{+^ygG4vn}DYQnRPrxyx+Z4K5p)bK?rSKkBXstpg6yL4* z7lC_(_l`m3q#su3XG+#u#kWA0M{qmLc?9h7;J}mDqZi@Cf}|29+nZ z()VQzeYcW}U-A3vu@_3J1m913M5=yLi4;oYJ2cAquNmcr9A(q2LgjXvUiCXl&2q*6 zLhJC{s^k_bxlhVmzFo%f zUf`<)zAas-FH;sMSxc0x!xZyt%6c0{F#ZfV7b)u_C97D;`j}#FQ_Po2j8lpEAH{5e zHm~5nB7GkQy!h-J+m>9J4NCmqVazM~=L{-WrbMCllq~s4Ot08t`MJd=t2N<~_Wg># zT=8E}{D9&gnD=30ja|Q>!~~U?tI$&;^t%deR;Ue*)rbOz87*vbK2>nCM!?54`T91+ zRrjg^;H!mxRiR?z5Vhx{g)MX30T@^#^dkzzzpeKx zzY1e(1b>@!9A+@`LIIUw^6tu&$SYv46`THSP&vvs6nabXLyB)TK3Osz{}$gLS3pm# z(90FNT%iFthO|YYk1MnTCTm5(4uw7eCu;@dug&MXgBmJM@18HJQ z`{^(ITgoR*G8P~4E#Q0reo^PMFt>CVn}!>8K0X2V`bN|?(h=07Fj?PdnzqA3{tc$- zT6oOAfp@})zme~PNq-|;_nX1dP$$nk0Z%sgOxM@K&l)!H@4{q5qa{%~U)~S;Iv)>1 I+q&id2Qe=l@&Et;