/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠF ut ur ice ĠGmbH Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . fut ur ice . fre es ound . feature . audio Ċ Ċ import Ġcom . google . android . ex op layer 2 . Exo Player Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean Ċ Ċ /** Ċ Ġ* ĠBase Ġclass Ġfor Ġmaking ĠObservable s Ġfrom ĠEx o Player Ġcallback Ġevents . Ċ Ġ* Ċ Ġ* ĠPrimary Ġpurpose Ġis Ġavoid Ġoverriding Ġall Ġthe ĠEx o Player ĠPlayer Ġcallbacks Ġin Ġeach ĠDis posable Ċ Ġ* Ġand Ġencaps ulating Ġthe ĠDis posable Ġhandling . Ċ Ġ* Ċ Ġ* ĠTODO ĠCould Ġthis Ġderive Ġfrom ĠMain Thread Disposable Ġinstead ? Ċ Ġ* ĠTODO ĠThis Ġcould Ġbe Ġmade Ġmore Ġabstract Ġand Ġprovide Ġan Ġabstract Ġon Disposed () Ġhook . Ċ Ġ**/ Ċ internal Ġabstract Ġclass ĠBase Exo Player Disposable ( protected Ġval Ġex o Player : ĠEx o Player ) ĊĠĠĠ Ġ: ĠDis posable , ĠSimple Player EventListener () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġun subscribed Ġ= ĠAtomic Boolean () ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( un subscribed . compare AndSet ( false , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex o Player . remove Listener ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Disposed (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġun subscribed . get () ĊĠĠĠ Ġ} Ċ } Ċ