今天在调试项目的时候,遇到一个问题,之前在写代码的时候,调试都是在本地的电脑上进行调试,然而今天是通过远程登陆到电脑进行调试的,所以在调试的过程中遇到了一个问题。

其实开始的时候,有同事反应说,当远程登陆播放的时候,另外一个人登陆进去,开始在播放的那一方退出,然后播放器就崩溃了。然后我看了下打印信息,以为一直是系统的原因,缺少什么库,或者库不完整的原因。

然而后面因为急着需要,所以就认真查看了下原因,看了下崩溃的时候,windows提示的信息是d3d.dll出错。

直到今天,我本人远程到自己的开发电脑上调试的时候,出现了一个问题,就是播放的好好的,然后,当我把远程桌面整个最小化的时候,回到本地播放电脑的时候,再回到远程桌面,播放器就崩溃了。

于是就认真跟踪了下程序,在我们播放器中,D3D,我是用来显示视频用的,代码量不是特别多,所以在重要的函数地方,叫打印信息。

最后重复上面的动作,播放器崩溃了,然后查看,发现时崩溃在:

if(m_pd3dSurface[ddpos] == NULL) return nRet;
switch (m_pd3dDevice[ddpos]->TestCooperativeLevel()){//测试设备丢失状态,即检测设备的当前状态
case D3D_OK://一切正常
break;
case D3DERR_DEVICELOST://设备丢失
CloseDirectDraw();
if (!this->InitDirectDraw ())
{
CloseDirectDraw();

return 0;
}
break;;
case D3DERR_DEVICENOTRESET://复位丢失,可以reset
//m_pd3dDevice[ddpos]->Reset(0);//bug-----所在的位置

m_pd3dDevice[ddpos]->Reset(&d3dpp);//modefy by lhp---解决上面崩溃的问题

CloseDirectDraw();

于是在网上查了下资料,认真看了下原因,原来是以为是在设备丢失以后调用复位函数出现的问题。

其中前面两篇随笔就是本人查找的过程中,个人觉得比较完整能解决问题的文章资料,所以就贴了过来,留作以后做参考。

项目中遇到的direct3d问题,设备丢失的更多相关文章

  1. Direct3d 设备丢失 (device lost) (转载)

    转:http://blog.csdn.net/kuangfengwu/article/details/7674074 1.什么时候设备丢失 一个Direct3D设备, 有两种状态: 操作状态或丢失状态 ...

  2. (转)Direct3d 设备丢失 (device lost)

    1.什么时候设备丢失 一个Direct3D设备, 有两种状态: 操作状态或丢失状态. 操作状态: 是设备的正常状态, 设备按预期运行, 并且能present所有渲染效果 丢失状态: 所有渲染操作悄然失 ...

  3. MVC项目中如何判断用户是在用什么设备进行访问

    使用UAParser在C#MVC项目中如何判断用户是在用什么设备进行访问(手机,平板还是普通的电脑) 现在我们开发的很多web应用都要支持手机等移动设备.为了让手机用户能有更加好的用户体验,我们经常为 ...

  4. eclipse项目中丢失的R包找回方法

    当我们项目中的R文件丢失的时候会令我们痛苦不已,怎样找回呢?总不能删了吧,那样心血会毁于一旦的,我们肯定不会那样做,那要怎么办呢?我这里提供三种方法: ​一,一般情况下这样: ​    ​方法一:选中 ...

  5. 使用UAParser在C#MVC项目中如何判断用户是在用什么设备进行访问(手机,平板还是普通的电脑)

    现在我们开发的很多web应用都要支持手机等移动设备.为了让手机用户能有更加好的用户体验,我们经常为手机设备专门准备一套前端的页面.这样当用户使用普通电脑来访问的时候,我们的应用就向用户展示普通电脑的页 ...

  6. 【工作细节记录】维护项目中前端JS组件丢失后,应如何维护开发之启发

    事因: 我所维护的项目为旧项目,接手项目后并没有什么开发文档留下,导致很多时候一出现问题就需要自己去研究整个过程. 项目中一直使用一个"$.download()"的方法进行文件下载 ...

  7. iOS项目中常用的第三方开源库

    1.项目使用的第三方开源库 项目使用了CocoaPods(类似java中的maven)管理常用的第三方库,一些特殊的单独引用,下面介绍下比较好用的几个. (1)AFNetworking 目前比较推荐的 ...

  8. 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入

    在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...

  9. eclipse导入web项目之后项目中出现小红叉解决办法

    项目中有小红叉我遇到的最常见的情况: 1.项目代码本身有问题.(这个就不说了,解决错误就OK) 2.项目中的jar包丢失.(有时候eclipse打开时会出现jar包丢失的情况,关闭eclipse重新打 ...

随机推荐

  1. I/O复用的应用场合

    I/O复用(select.poll)典型使用在下列网络应用场合: (1)当客户处理多个描述字(通常是交互式输入和网络套接口)时,必须使用I/O复用. (2)一个客户同时处理多个套接口是可能的,不过比较 ...

  2. javascript 闭包 通俗解释

    代码段 function foo(){ var a = 2; function bar(){ console.log(a); } return bar; } var baz = foo(); baz( ...

  3. 自己主动化測试使用mybatis更新数据库信息实例

    代码例如以下: mybatis配置文件: <? xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...

  4. 【LeetCode】114. Flatten Binary Tree to Linked List

    Flatten Binary Tree to Linked List Given a binary tree, flatten it to a linked list in-place. For ex ...

  5. PHP-Resque 简介

    转载于:http://blog.hsatac.net/2012/01/php-resque-introduction/ Resque 是 Github 基於 Redis 开发的 background ...

  6. C#:使用Window自带函数(如:user32.dll)

    [DllImport("user32.dll", EntryPoint = "GetScrollInfo", CallingConvention = Calli ...

  7. 使用 SSHFS 挂载远程的 Linux 文件系统及目录

    1. 安装 sudo apt-get install sshfs 2. 创建 SSHFS 挂载目录 sudo mkdir /mnt/cong 3.使用 SSHFS 挂载远程的文件系统 sudo ssh ...

  8. unity, yield return new WaitForSeconds(waitTime) 在 Time.timeScale=0下卡死

    例如下面代码: IEnumerator f(){ Time.timeScale = 0; float waitTime=2; yield return new WaitForSeconds (wait ...

  9. MySQL慢查询查找和调优测试

    MySQL慢查询查找和调优测试,接下来详细介绍,需要了解的朋友可以参考下.本文参考自:http://www.jbxue.com/db/4376.html  编辑 my.cnf或者my.ini文件,去除 ...

  10. 如何使用SignalTap II觀察reg與wire值? (SOC) (Verilog) (Quartus II) (SignalTap II)

    Abstract撰寫Verilog時,雖然每個module都會先用ModelSim或Quartus II自帶的simulator仿真過,但真的將每個module合併時,一些不可預期的『run-time ...