@@ -814,88 +814,43 @@ int OSD::start()
814814 return ret;
815815}
816816
817- int OSD::exit ( )
817+ void OSD::cleanup_item (OSDItem *osdItem )
818818{
819819 int ret;
820820
821- ret = IMP_OSD_Stop (osdGrp);
822- LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_Stop(" << osdGrp << " )" );
823-
824- if (osdPrivBack.imp_rgn )
825- {
826- ret = IMP_OSD_ShowRgn (osdPrivBack.imp_rgn , osdGrp, 0 );
827- LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_ShowRgn(osdPrivBack.imp_rgn, " << osdGrp << " , 0)" );
828- }
829-
830- if (osdPrivText.imp_rgn )
831- {
832- ret = IMP_OSD_ShowRgn (osdPrivText.imp_rgn , osdGrp, 0 );
833- LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_ShowRgn(osdPrivText.imp_rgn, " << osdGrp << " , 0)" );
834- }
835-
836- ret = IMP_OSD_ShowRgn (osdTime.imp_rgn , osdGrp, 0 );
837- LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_ShowRgn(osdTime.imp_rgn, " << osdGrp << " , 0)" );
838-
839- ret = IMP_OSD_ShowRgn (osdUser.imp_rgn , osdGrp, 0 );
840- LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_ShowRgn(osdUser.imp_rgn, " << osdGrp << " , 0)" );
841-
842- ret = IMP_OSD_ShowRgn (osdUptm.imp_rgn , osdGrp, 0 );
843- LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_ShowRgn(osdUptm.imp_rgn, " << osdGrp << " , 0)" );
844-
845- ret = IMP_OSD_ShowRgn (osdLogo.imp_rgn , osdGrp, 0 );
846- LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_ShowRgn(osdLogo.imp_rgn, " << osdGrp << " , 0)" );
847-
848- if (osdPrivBack.imp_rgn )
849- {
850- ret = IMP_OSD_UnRegisterRgn (osdPrivBack.imp_rgn , osdGrp);
851- LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_UnRegisterRgn(osdPrivBack.imp_rgn, " << osdGrp << " )" );
852- }
853-
854- if (osdPrivText.imp_rgn )
855- {
856- ret = IMP_OSD_UnRegisterRgn (osdPrivText.imp_rgn , osdGrp);
857- LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_UnRegisterRgn(osdPrivText.imp_rgn, " << osdGrp << " )" );
858- }
821+ if (osdItem->imp_rgn == 0 )
822+ return ;
859823
860- ret = IMP_OSD_UnRegisterRgn (osdTime. imp_rgn , osdGrp);
861- LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_UnRegisterRgn(osdTime. imp_rgn, " << osdGrp << " )" );
824+ ret = IMP_OSD_ShowRgn (osdItem-> imp_rgn , osdGrp, 0 );
825+ LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_ShowRgn( " << osdItem-> imp_rgn << " , " << osdGrp << " , 0 )" );
862826
863- ret = IMP_OSD_UnRegisterRgn (osdUser. imp_rgn , osdGrp);
864- LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_UnRegisterRgn(osdUser. imp_rgn, " << osdGrp << " )" );
827+ ret = IMP_OSD_UnRegisterRgn (osdItem-> imp_rgn , osdGrp);
828+ LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_UnRegisterRgn(" << osdItem-> imp_rgn << " , " << osdGrp << " )" );
865829
866- ret = IMP_OSD_UnRegisterRgn (osdUptm.imp_rgn , osdGrp);
867- LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_UnRegisterRgn(osdUptm.imp_rgn, " << osdGrp << " )" );
830+ IMP_OSD_DestroyRgn (osdItem->imp_rgn );
868831
869- ret = IMP_OSD_UnRegisterRgn (osdLogo. imp_rgn , osdGrp );
870- LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_UnRegisterRgn(osdUptm.imp_rgn, " << osdGrp << " ) " );
832+ free (osdItem-> data );
833+ }
871834
872- if (osdPrivBack.imp_rgn )
873- {
874- IMP_OSD_DestroyRgn (osdPrivBack.imp_rgn );
875- }
835+ int OSD::exit ()
836+ {
837+ int ret;
876838
877- if (osdPrivText.imp_rgn )
878- {
879- IMP_OSD_DestroyRgn (osdPrivText.imp_rgn );
880- }
839+ ret = IMP_OSD_Stop (osdGrp);
840+ LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_Stop(" << osdGrp << " )" );
881841
882- IMP_OSD_DestroyRgn (osdTime.imp_rgn );
883- IMP_OSD_DestroyRgn (osdUser.imp_rgn );
884- IMP_OSD_DestroyRgn (osdUptm.imp_rgn );
885- IMP_OSD_DestroyRgn (osdLogo.imp_rgn );
842+ cleanup_item (&osdPrivBack);
843+ cleanup_item (&osdPrivText);
844+ cleanup_item (&osdTime);
845+ cleanup_item (&osdUser);
846+ cleanup_item (&osdUptm);
847+ cleanup_item (&osdLogo);
886848
887849 ret = IMP_OSD_DestroyGroup (osdGrp);
888850 LOG_DEBUG_OR_ERROR (ret, " IMP_OSD_DestroyGroup(" << osdGrp << " )" );
889851
890- // cleanup osd image data
891- free (osdPrivBack.data );
892- free (osdPrivText.data );
893- free (osdTime.data );
894- free (osdUser.data );
895- free (osdUptm.data );
896- free (osdLogo.data );
897-
898852 sft_freefont (sft->font );
853+
899854 return 0 ;
900855}
901856
0 commit comments