/// <summary>
        /// Starts the screens object requests, Must be called to receive screens data from
        /// the underlying system
        /// </summary>
        protected override MLResult StartAPI()
        {
            MLResult.Code resultCode = MLScreensNativeBindings.MLScreensGetWatchHistoryList(ref _watchHistoryList);
            var           result     = MLResult.Create(resultCode);

            if (!result.IsOk)
            {
                MLPluginLog.ErrorFormat("MLScreens.StartAPI failed to retrieve saved screen information. Reason: {0}", result);
                return(result);
            }

            PopulateWatchHistory();
            resultCode = MLScreensNativeBindings.MLScreensReleaseWatchHistoryList(ref _watchHistoryList);
            result     = MLResult.Create(resultCode);
            if (!result.IsOk)
            {
                MLPluginLog.ErrorFormat("MLScreens.StartAPI failed to clean screens data. Reason: {0}", result);
                return(result);
            }

            _defaultGrayThumbnailImage = CreateGrayThumbnailImage();

            return(result);
        }