public HackViewModel CreateHeroViewModel(IHack hackItemDataSource, bool isExperienceEditor) { return(new HackViewModel { HackImage = hackItemDataSource.HackImage, HackTitle = new HtmlString(_glassHtml.Editable(hackItemDataSource, i => i.HackTitle, new { EnclosingTag = "h2" })), HackBody = new HtmlString(_glassHtml.Editable(hackItemDataSource, i => i.HackBody, new { EnclosingTag = "div" })), TeamTitle = new HtmlString(_glassHtml.Editable(hackItemDataSource, i => i.TeamTitle, new { EnclosingTag = "h2" })), TeamCountry = new HtmlString(_glassHtml.Editable(hackItemDataSource, i => i.TeamCountry, new { EnclosingTag = "p" })), TeamCity = new HtmlString(_glassHtml.Editable(hackItemDataSource, i => i.TeamCity, new { EnclosingTag = "p" })), TeamDetails = new HtmlString(_glassHtml.Editable(hackItemDataSource, i => i.TeamDetails, new { EnclosingTag = "div" })), IsExperienceEditor = isExperienceEditor }); }
protected int m_TokenCounter; // Counter. Incremented whenever we create new samples. #endregion Fields #region Constructors /// <summary> /// Constructor /// </summary> public EVRCustomPresenter() { if (System.Threading.Thread.CurrentThread.GetApartmentState() != System.Threading.ApartmentState.MTA) { throw new Exception("Unsupported theading model"); } m_iDiscarded = 0; m_pClock = null; m_pMixer = null; m_pMediaEventSink = null; m_h2 = null; m_pMediaType = null; m_bSampleNotify = false; m_bRepaint = false; m_bEndStreaming = false; m_bPrerolled = false; m_RenderState = RenderState.Shutdown; m_fRate = 1.0f; m_TokenCounter = 0; m_pD3DPresentEngine = new D3DPresentEngine(); m_FrameStep = new FrameStep(); // Frame-stepping information. m_nrcSource = new MFVideoNormalizedRect(0.0f, 0.0f, 1.0f, 1.0f); m_scheduler = new Scheduler(D3DPresentEngine.PRESENTER_BUFFER_COUNT, m_pD3DPresentEngine); // Manages scheduling of samples. m_SamplePool = new SamplePool(D3DPresentEngine.PRESENTER_BUFFER_COUNT); // Pool of allocated samples. // Force load of mf.dll now, rather than when we try to start streaming DllCanUnloadNow(); }
//public void InitServicePointers(IMFTopologyServiceLookup pLookup) public int InitServicePointers(IntPtr p1Lookup) { // Make sure we *never* leave this entry point with an exception try { TRACE(("InitServicePointers")); int hr; int dwObjectCount = 0; IMFTopologyServiceLookup pLookup = null; IHack h1 = (IHack)new Hack(); try { h1.Set(p1Lookup, typeof(IMFTopologyServiceLookup).GUID, true); pLookup = (IMFTopologyServiceLookup)h1; lock (this) { // Do not allow initializing when playing or paused. if (IsActive()) { throw new COMException("EVRCustomPresenter::InitServicePointers", MFError.MF_E_INVALIDREQUEST); } SafeRelease(m_pClock); m_pClock = null; SafeRelease(m_pMixer); m_pMixer = null; SafeRelease(m_h2); m_h2 = null; m_pMediaEventSink = null; // SafeRelease(m_pMediaEventSink); dwObjectCount = 1; object[] o = new object[1]; try { // Ask for the clock. Optional, because the EVR might not have a clock. hr = pLookup.LookupService( MFServiceLookupType.Global, // Not used. 0, // Reserved. MFServices.MR_VIDEO_RENDER_SERVICE, // Service to look up. typeof(IMFClock).GUID, // Interface to look up. o, ref dwObjectCount // Number of elements in the previous parameter. ); MFError.ThrowExceptionForHR(hr); m_pClock = (IMFClock)o[0]; } catch { } // Ask for the mixer. (Required.) dwObjectCount = 1; hr = pLookup.LookupService( MFServiceLookupType.Global, 0, MFServices.MR_VIDEO_MIXER_SERVICE, typeof(IMFTransform).GUID, o, ref dwObjectCount ); MFError.ThrowExceptionForHR(hr); m_pMixer = (IMFTransform)o[0]; // Make sure that we can work with this mixer. ConfigureMixer(m_pMixer); // Ask for the EVR's event-sink interface. (Required.) dwObjectCount = 1; IMFTopologyServiceLookupAlt pLookup2 = (IMFTopologyServiceLookupAlt)pLookup; IntPtr[] p2 = new IntPtr[1]; hr = pLookup2.LookupService( MFServiceLookupType.Global, 0, MFServices.MR_VIDEO_RENDER_SERVICE, typeof(IMediaEventSink).GUID, p2, ref dwObjectCount ); MFError.ThrowExceptionForHR(hr); m_h2 = (IHack)new Hack(); m_h2.Set(p2[0], typeof(IMediaEventSink).GUID, false); m_pMediaEventSink = (IMediaEventSink)m_h2; // Successfully initialized. Set the state to "stopped." m_RenderState = RenderState.Stopped; } } finally { SafeRelease(h1); } return S_Ok; } catch (Exception e) { return Marshal.GetHRForException(e); } }
public int ReleaseServicePointers() { // Make sure we *never* leave this entry point with an exception try { TRACE(("ReleaseServicePointers")); // Enter the shut-down state. { lock (this) { m_RenderState = RenderState.Shutdown; } } // Flush any samples that were scheduled. Flush(); // Clear the media type and release related resources (surfaces, etc). SetMediaType(null); // Release all services that were acquired from InitServicePointers. SafeRelease(m_pClock); m_pClock = null; SafeRelease(m_pMixer); m_pMixer = null; SafeRelease(m_h2); m_h2 = null; m_pMediaEventSink = null; // SafeRelease(m_pMediaEventSink); return S_Ok; } catch (Exception e) { return Marshal.GetHRForException(e); } }