Esempio n. 1
0
	void Close()
	{
		// Stop Thread
		fprintf(stderr,"* SPU2-X: Waiting for DSound thread to finish...");
		dsound_running=false;

		WaitForSingleObject(thread,INFINITE);
		CloseHandle(thread);

		fprintf(stderr," Done.\n");

		//
		// Clean up
		//
		if( buffer != NULL )
		{
			buffer->Stop();

			for(u32 i=0;i<m_NumBuffers;i++)
			{
				if( buffer_events[i] != NULL )
					CloseHandle(buffer_events[i]);
				buffer_events[i] = NULL;
			}

			safe_release( buffer_notify );
			safe_release( buffer );
		}

		safe_release( dsound );
		CoUninitialize();
	}
        tstring print_log_info(ID3D11Resource* resource)
        {
            tstringstream ret;

            ID3D11Texture2D* t2d;
            if (SUCCEEDED(resource->QueryInterface(&t2d)))
            {
                D3D11_TEXTURE2D_DESC desc;
                t2d->GetDesc(&desc);
                safe_release(t2d);

                ret << L" " << desc.Width << L"x" << desc.Height << L" " << (is_srgb(desc.Format) ? L"sRGB" : L"") << L"(F:" << desc.Format << L" M:" << desc.MipLevels << L")";
            }

            ID3D11Texture3D* t3d;
            if (SUCCEEDED(resource->QueryInterface(&t3d)))
            {
                D3D11_TEXTURE3D_DESC desc;
                t3d->GetDesc(&desc);
                safe_release(t3d);

                ret << L" " << desc.Width << L"x" << desc.Height << L"x" << desc.Depth << L" (F:" << desc.Format << L" M:" << desc.MipLevels << L")";
            }

            return ret.str();
        }
Esempio n. 3
0
bool UPNPCheckDlg::WinUPnP_add(const unsigned short port, const string& protocol, const string& description, IUPnPNAT* pUN)
{
#ifdef HAVE_NATUPNP_H
	IStaticPortMappingCollection* pSPMC = WinUPnP_getStaticPortMappingCollection(pUN);
	if (!pSPMC)
		return false;
		
	/// @todo use a BSTR wrapper
	BSTR protocol_ = SysAllocString(Text::toT(protocol).c_str());
	BSTR description_ = SysAllocString(Text::toT(description).c_str());
	BSTR localIP = SysAllocString(Text::toT(Util::getLocalOrBindIp(false)).c_str());
	
	IStaticPortMapping* pSPM = 0;
	HRESULT hr = pSPMC->Add(port, protocol_, port, localIP, VARIANT_TRUE, description_, &pSPM);
	
	SysFreeString(protocol_);
	SysFreeString(description_);
	SysFreeString(localIP);
	
	bool ret = SUCCEEDED(hr);
	if (ret)
	{
		safe_release(pSPM);
	}
	safe_release(pSPMC);
	return ret;
#else
	return false;
#endif
}
Esempio n. 4
0
void obs_enum_audio_monitoring_devices(obs_enum_audio_device_cb cb,
		void *data)
{
	IMMDeviceEnumerator *enumerator = NULL;
	IMMDeviceCollection *collection = NULL;
	UINT count;
	HRESULT hr;

	hr = CoCreateInstance(&CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL,
			&IID_IMMDeviceEnumerator, &enumerator);
	if (FAILED(hr)) {
		goto fail;
	}

	hr = enumerator->lpVtbl->EnumAudioEndpoints(enumerator, eRender,
			DEVICE_STATE_ACTIVE, &collection);
	if (FAILED(hr)) {
		goto fail;
	}

	hr = collection->lpVtbl->GetCount(collection, &count);
	if (FAILED(hr)) {
		goto fail;
	}

	for (UINT i = 0; i < count; i++) {
		if (!get_device_info(cb, data, collection, i)) {
			break;
		}
	}

fail:
	safe_release(enumerator);
	safe_release(collection);
}
Esempio n. 5
0
void ContentLayer::replaceTopNode(Layout *node, Transition *enterTransition, Transition *exitTransition) {
	if (!_nodes.empty()) {
		auto back = _nodes.back();
		back->retain();
		_nodes.popBack();
		back->onPopTransitionBegan(this, false);

		auto tit = _exitTransitions.find(back);
		if (tit != _exitTransitions.end()) {
			safe_retain(node);
			safe_retain(enterTransition);
			safe_retain(exitTransition);
			back->runAction(action::callback(tit->second, [this, back, node, enterTransition, exitTransition] {
				eraseNode(back);
				back->onPop(this, false);
				back->release();
				pushNode(node, enterTransition, exitTransition);
				safe_release(node);
				safe_release(enterTransition);
				safe_release(exitTransition);
			}));
		} else {
			eraseNode(back);
			back->onPop(this, false);
			back->release();
			pushNode(node, enterTransition, exitTransition);
		}
	}
}
	//=============================================================================================================
	void CGodRayRenderer9::UnloadContent()
	{
		safe_release(surfaces[0]);
		safe_release(surfaces[1]);
		safe_release(Occluders);
		safe_release(Color);

		memset(rendertargets, 0, sizeof(rendertargets));
		CEffectRenderer9::UnloadContent();
	}
    void delta_sparse_voxel_octree::destroy()
    {
        // destroy other stuff first
        sparse_voxel_octree::destroy();

        safe_release(uav_v_delta_);
        safe_release(srv_v_delta_);
        safe_release(v_delta_);

        inject_rsm_mu_start_slot_ = -1;
    }
Esempio n. 8
0
void D3DRenderWidget::d3dResize()
{
	assert(m_d3dImmediateContext);
	assert(m_d3dDevice);
	assert(m_swapChain);

	safe_release(m_renderTargetView);
	safe_release(m_depthStencilView);
	safe_release(m_depthStencilBuffer);

	m_swapChain->ResizeBuffers(1, width(), height(), DXGI_FORMAT_R8G8B8A8_UNORM, 0);
	ID3D11Texture2D* backBuffer;
	m_swapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), reinterpret_cast<void**>(&backBuffer));
	m_d3dDevice->CreateRenderTargetView(backBuffer, 0, &m_renderTargetView);
	safe_release(backBuffer);

	D3D11_TEXTURE2D_DESC depthStencilDesc;
	depthStencilDesc.Width = width();
	depthStencilDesc.Height = height();
	depthStencilDesc.MipLevels = 1;
	depthStencilDesc.ArraySize = 1;
	depthStencilDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;

	if (m_enable4xMsaa)
	{
		depthStencilDesc.SampleDesc.Count = 4;
		depthStencilDesc.SampleDesc.Quality = m_4xMsaaQuality - 1;
	}
	else
	{
		depthStencilDesc.SampleDesc.Count = 1;
		depthStencilDesc.SampleDesc.Quality = 0;
	}

	depthStencilDesc.Usage = D3D11_USAGE_DEFAULT;
	depthStencilDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL;
	depthStencilDesc.CPUAccessFlags = 0;
	depthStencilDesc.MiscFlags = 0;

	m_d3dDevice->CreateTexture2D(&depthStencilDesc, 0, &m_depthStencilBuffer);
	m_d3dDevice->CreateDepthStencilView(m_depthStencilBuffer, 0, &m_depthStencilView);

	m_d3dImmediateContext->OMSetRenderTargets(1, &m_renderTargetView, m_depthStencilView);

	m_screenViewport.TopLeftX = 0;
	m_screenViewport.TopLeftY = 0;
	m_screenViewport.Width = static_cast<float>(width());
	m_screenViewport.Height = static_cast<float>(height());
	m_screenViewport.MinDepth = 0.0f;
	m_screenViewport.MaxDepth = 1.0f;

	m_d3dImmediateContext->RSSetViewports(1, &m_screenViewport);
}
Esempio n. 9
0
    void kinect_gbuffer::shutdown()
    {
        if (sensor_)
        {
            sensor_->NuiShutdown();
            safe_release(sensor_);
        }

        if (kill_event_)
        {
            CloseHandle(kill_event_);
            kill_event_ = nullptr;
        }

        if (color_event_)
        {
            CloseHandle(color_event_);
            color_event_ = nullptr;
        }

        if (depth_event_)
        {
            CloseHandle(depth_event_);
            depth_event_ = nullptr;
        }

        DeleteCriticalSection(&cs_color_);
        DeleteCriticalSection(&cs_depth_);
    }
Esempio n. 10
0
    void texture_cache::destroy()
    {
        for (auto i = texture_cache_.begin(); i != texture_cache_.end(); ++i)
            safe_release(i->second);

        texture_cache_.clear();
    }
Esempio n. 11
0
static inline void audio_monitor_free(struct audio_monitor *monitor)
{
	if (monitor->source) {
		obs_source_remove_audio_capture_callback(
				monitor->source, on_audio_playback, monitor);
	}

	if (monitor->client)
		monitor->client->lpVtbl->Stop(monitor->client);

	safe_release(monitor->device);
	safe_release(monitor->client);
	safe_release(monitor->render);
	audio_resampler_destroy(monitor->resampler);
	circlebuf_free(&monitor->delay_buffer);
	da_free(monitor->buf);
}
Esempio n. 12
0
 tstring print_log_info(ID3D11ShaderResourceView* srv)
 {
     ID3D11Resource* resource;
     srv->GetResource(&resource);
     tstring ret = print_log_info(resource);
     safe_release(resource);
     return ret;
 }
Esempio n. 13
0
static bool get_device_info(obs_enum_audio_device_cb cb, void *data,
		IMMDeviceCollection *collection, UINT idx)
{
	IPropertyStore *store = NULL;
	IMMDevice *device = NULL;
	PROPVARIANT name_var;
	char utf8_name[512];
	WCHAR *w_id = NULL;
	char utf8_id[512];
	bool cont = true;
	HRESULT hr;

	hr = collection->lpVtbl->Item(collection, idx, &device);
	if (FAILED(hr)) {
		goto fail;
	}

	hr = device->lpVtbl->GetId(device, &w_id);
	if (FAILED(hr)) {
		goto fail;
	}

	hr = device->lpVtbl->OpenPropertyStore(device, STGM_READ, &store);
	if (FAILED(hr)) {
		goto fail;
	}

	PropVariantInit(&name_var);
	hr = store->lpVtbl->GetValue(store, &PKEY_Device_FriendlyName,
			&name_var);
	if (FAILED(hr)) {
		goto fail;
	}

	os_wcs_to_utf8(w_id, 0, utf8_id, 512);
	os_wcs_to_utf8(name_var.pwszVal, 0, utf8_name, 512);

	cont = cb(data, utf8_name, utf8_id);

fail:
	safe_release(store);
	safe_release(device);
	if (w_id)
		CoTaskMemFree(w_id);
	return cont;
}
Esempio n. 14
0
void Texture::destroy()
{
    mDev                = nullptr;
    mCtx                = nullptr;

    mUsage              = EUsage::DynamicShaderResource; 
    mFormat             = DXGI_FORMAT_UNKNOWN; 
    mDimension          = EDimension::Texture_2D;

    mWidth              = 0; 
    mHeight             = 0; 
    mDepth              = 0;

    mArraySize          = 0; 
    mMipLevels          = 1;

    mMultiSampleCount   = 1;
    mMultiSampleQuality = 0;

    safe_delete(mImageCache);

    safe_release(mSRV);
    safe_release(mRTV);
    safe_release(mDSV);
    safe_release(mUAV);

    safe_release(mTexture1D);
    safe_release(mTexture2D);
    safe_release(mTexture3D);

    mIsImageCacheDirty = false;
    mIsInitalized = false;
}
	//=============================================================================================================
	void CCausticsRenderer9::UnloadContent()
	{
		for( size_t i = 0; i < distancemaps.size(); ++i )
		{
			for( int j = 0; j < 12; ++j )
			{
				safe_release(distancemaps[i].surfaces[j]);
			}
		}
		
		safe_release(photonsurface);
		safe_release(shadowsurface);

		for( int j = 0; j < 6; ++j )
			safe_release(causticsurfaces[j]);

		CEffectRenderer9::UnloadContent();
	}
Esempio n. 16
0
void DxFw::release()
{
	safe_delete(mParticleSystemMgr);
	safe_delete(mRenderer);
	safe_delete(mResourceMgr);
	safe_Release(mDevice);
	safe_Release(mDirect3D);
	safe_release(mInputSys);
	
}
Esempio n. 17
0
	void CBundle::PostStop(bool wasUnregistered, bool activatorError)
	{
		UnregisterServices();
		ReleaseUsedServices();
		m_context->DropListeners();

		m_context->Finalize();
		safe_release(m_context);
		safe_release(m_activator);

		VERBOSE("[%s] Unloading module", m_location.c_str());
		m_module.Shutdown();

		if(!wasUnregistered)
		{
			m_state = eBndlState_Resolved;
			m_systemBundle->PostBundleEvent(this, eBndlEvntT_Stopped);
		}
	}
Esempio n. 18
0
File: plist.cpp Progetto: aosm/samba
static CFPropertyListRef load_plist_from_path(const char * path)
{
    CFURLRef	    url = NULL;
    CFDataRef	    data = NULL;
    CFStringRef	    err = NULL;

    CFPropertyListRef plist = NULL;

    url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault,
		    (const UInt8 *)path, strlen(path),
		    false /* isDirectory */);

    if (url == NULL) {
	VERBOSE("failed to build CFURL for '%s'\n", path);
	goto done;
    }

    if (!CFURLCreateDataAndPropertiesFromResource(kCFAllocatorDefault,
			url, &data, NULL, NULL, NULL)) {
	VERBOSE("failed to read CFURL data for '%s'\n", path);
	goto done;
    }

    /* Despite the name, this actually reads both binary and XML plists. */
    plist = CFPropertyListCreateFromXMLData(kCFAllocatorDefault,
		    data, kCFPropertyListImmutable, &err);
    if (!plist) {
	char errbuf[256];

	CFStringGetCString(err, errbuf, sizeof(errbuf), kCFStringEncodingUTF8);
	VERBOSE("plist parse error for '%s': %s\n",
	    path, errbuf);
    }

done:
    safe_release(err);
    safe_release(url);
    safe_release(data);

    return plist;
}
Esempio n. 19
0
	//=============================================================================================================
	void CGame10::ShutDown()
	{
		if( Graphics )
			Graphics->ClearState();

		safe_release(DepthStencil);
		safe_release(DepthStencilView);
		safe_release(RenderTargetView);
		safe_release(SwapChain);

		if( Graphics )
		{
			ULONG rc = Graphics->Release();

			if( rc > 0 )
			{
				std::stringstream ss;
				ss << "d3ddevice refcount == " << rc;
				dnassert(, ss.str(), true);
			}
			else
			{
Esempio n. 20
0
    void Player_::OnTopologyStatus(IMFMediaEventPtr pEvent)
    {
      UINT32 status; 

      THROW_IF_ERR(pEvent->GetUINT32(MF_EVENT_TOPOLOGY_STATUS, &status));
      if (status == MF_TOPOSTATUS_READY)
      {
        safe_release(m_pVideoDisplay);

        // Get the IMFVideoDisplayControl interface from EVR. This call is
        // expected to fail if the media file does not have a video stream.

        (void)MFGetService(m_pSession.Get(), MR_VIDEO_RENDER_SERVICE, 
          IID_PPV_ARGS(m_pVideoDisplay.GetAddressOf()));
        static_cast<this_type&>(*this).process_event(ev::OpenComplete());
        //StartPlayback();
      }
    }
Esempio n. 21
0
D3DRenderWidget::~D3DRenderWidget()
{
	safe_release(m_renderTargetView);
	safe_release(m_depthStencilView);
	safe_release(m_swapChain);
	safe_release(m_depthStencilBuffer);

	if (m_d3dImmediateContext)
		m_d3dImmediateContext->ClearState();

	safe_release(m_d3dImmediateContext);
	safe_release(m_d3dDevice);
}
Esempio n. 22
0
bool UPNPCheckDlg::WinUPnP_remove(const unsigned short port, const string& protocol, IUPnPNAT* pUN)
{
#ifdef HAVE_NATUPNP_H
	IStaticPortMappingCollection* pSPMC = WinUPnP_getStaticPortMappingCollection(pUN);
	if (!pSPMC)
		return false;
		
	/// @todo use a BSTR wrapper
	BSTR protocol_ = SysAllocString(Text::toT(protocol).c_str());
	
	HRESULT hr = pSPMC->Remove(port, protocol_);
	safe_release(pSPMC);
	SysFreeString(protocol_);
	
	return SUCCEEDED(hr);
#else
	return false;
#endif
}
Esempio n. 23
0
 void seq_tab_dialog::discard_device()
 {
   //safe_release(sampler_state_);
   //safe_release(shader_res_view_);
   //safe_release(cb_changes_every_frame_);
   //safe_release(cb_change_on_resize_);
   //safe_release(cb_never_changes_);
   //safe_release(i_buffer_);
   //safe_release(v_buffer_);
   //safe_release(p_shader_);
   //safe_release(input_layout_);
   //safe_release(v_shader_);
   // discard_swap_chain_dependent_resources();
   safe_release(render_target_);
   /*   safe_release(dxgi_swap_chain_);
   safe_release(d3d_context_);
   safe_release(d3d_device_);
   safe_release(dxgi_adapter_);
   */ 
 }
Esempio n. 24
0
LRESULT CAnimatedButton::onClose(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
// TODO тут всегда m_hWnd = NULL    dcassert(m_hWnd);
	if (m_pImage)
	{
		if (m_bInited)
		{
			m_pImage->UnregisterCallback(OnFrameChanged, (LPARAM)this);
			m_pImage->DeleteBackDC(m_hBackDC);
		}
		safe_release(m_pImage);
	}
	
	if (m_hDC)
	{
		dcdrun(int l_res =)::ReleaseDC(m_hWnd, m_hDC);
		// TODO dcassert(l_res);
		m_hDC = nullptr;
	}
	
	return 0;
}
Esempio n. 25
0
File: plist.cpp Progetto: aosm/samba
/* Initialise a Preferences object from the given pspec. This might be an
 * SCPreferences AppID or it might be the path to a plist file.
 */
Preferences::Preferences(const char * pspec)
    : m_pspec(pspec), m_plist(NULL), m_scpref(NULL)
{

    /* Try to load this as a plist file first. The SCPreferences API does a
     * bunch of work if it can't find the file, and we should avoid that unless
     * we have a good idea that it's necessary.
     */
    this->m_plist = load_plist_from_path(this->m_pspec.c_str());
    if (this->m_plist) {
	/* Loading a plist should always give you back a dictionary. */
	ASSERT(CFDictionaryGetTypeID() == CFGetTypeID(this->m_plist));
	VERBOSE("loaded plist %s\n", pspec);
	return;
    }

    cf_typeref<CFStringRef> appname(cfstring_wrap(getprogname()));
    cf_typeref<CFStringRef> appid(cfstring_wrap(this->m_pspec.c_str()));

    this->m_scpref = SCPreferencesCreate(kCFAllocatorDefault, appname, appid);
    if (this->m_scpref == NULL) {
	return;
    }

    /* If there was no existing preferences file, SCError() should return
     * kSCStatusNoConfigFile. We are only interested in reading preferences, so
     * we want to fail if there's no existing config.
     */

    if (SCError() != kSCStatusOK) {
	safe_release(this->m_scpref);
    }

    if (this->m_scpref) {
	VERBOSE("loaded SC preferences %s\n", pspec);
    }

}
Esempio n. 26
0
 seq_tab_dialog::~seq_tab_dialog()
 {
   discard_device();
   safe_release(d2d_factory_);
   safe_release(write_factory_);
 };
Esempio n. 27
0
            HRESULT create(IFilterGraph2* graph)
            {
                // FIXME: do not assert here -> result is RCP_E_CHANGED_MODE, which can be ignored
                (CoInitialize(nullptr));

                VARIANT name;
                //LONGLONG start=MAXLONGLONG, stop=MAXLONGLONG;

                devices.clear();

                //create an enumerator for video input devices
                ICreateDevEnum*    dev_enum;
                assert_hr(CoCreateInstance(CLSID_SystemDeviceEnum, nullptr, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, (void**)&dev_enum));

                IEnumMoniker* enum_moniker;
                HRESULT hr = dev_enum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, &enum_moniker, 0);

                // no devices
                if (hr == S_FALSE)
                    return S_OK;

                //get devices
                IMoniker* moniker;
                unsigned long dev_count;
                const int MAX_DEVICES = 8;
                assert_hr(enum_moniker->Next(MAX_DEVICES, &moniker, &dev_count));

                for (size_t i=0; i < dev_count; ++i)
                {
                    //get properties
                    IPropertyBag* pbag;
                    hr = moniker[i].BindToStorage(nullptr, nullptr, IID_IPropertyBag, (void**)&pbag);

                    if (hr >= 0)
                    {
                        VariantInit(&name);

                        //get the description
                        if(FAILED(pbag->Read(L"Description", &name, 0)))
                            hr = pbag->Read(L"FriendlyName", &name, 0);

                        if (SUCCEEDED(hr))
                        {
                            //Initialize the VideoDevice struct
                            video_device dev;
                            dev.name = name.bstrVal;

                            //add a filter for the device
                            if (SUCCEEDED(graph->AddSourceFilterForMoniker(moniker+i, 0, dev.name.c_str(), &dev.filter)))
                                devices.push_back(dev);
                        }

                        VariantClear(&name);
                        safe_release(pbag);
                    }

                    moniker[i].Release();
                }

                return S_OK;
            }
Esempio n. 28
0
 void destroy()
 {
     safe_release(filter);
 }
Esempio n. 29
0
//=============================================================================================================
Game::~Game()
{
	Clear();
	safe_release(rendersurface);
}
	RHI_RasterizerState::~RHI_RasterizerState()
	{
		safe_release(static_cast<ID3D11RasterizerState*>(m_buffer));
	}