Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
2aebb3eb
Q
qemu
项目概览
openeuler
/
qemu
通知
10
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
2aebb3eb
编写于
4月 15, 2004
作者:
B
bellard
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
blanking support
git-svn-id:
svn://svn.savannah.nongnu.org/qemu/trunk@726
c046a42c-6fe2-441c-8c8c-71466251a162
上级
95917e3f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
50 addition
and
6 deletion
+50
-6
hw/vga.c
hw/vga.c
+50
-6
未找到文件。
hw/vga.c
浏览文件 @
2aebb3eb
...
...
@@ -109,7 +109,8 @@ typedef struct VGAState {
uint32_t
line_compare
;
uint32_t
start_addr
;
uint8_t
last_cw
,
last_ch
;
uint32_t
last_width
,
last_height
;
uint32_t
last_width
,
last_height
;
/* in chars or pixels */
uint32_t
last_scr_width
,
last_scr_height
;
/* in pixels */
uint8_t
cursor_start
,
cursor_end
;
uint32_t
cursor_offset
;
unsigned
int
(
*
rgb_to_pixel
)(
unsigned
int
r
,
unsigned
int
g
,
unsigned
b
);
...
...
@@ -1155,7 +1156,9 @@ static void vga_draw_text(VGAState *s, int full_update)
}
if
(
width
!=
s
->
last_width
||
height
!=
s
->
last_height
||
cw
!=
s
->
last_cw
||
cheight
!=
s
->
last_ch
)
{
dpy_resize
(
s
->
ds
,
width
*
cw
,
height
*
cheight
);
s
->
last_scr_width
=
width
*
cw
;
s
->
last_scr_height
=
height
*
cheight
;
dpy_resize
(
s
->
ds
,
s
->
last_scr_width
,
s
->
last_scr_height
);
s
->
last_width
=
width
;
s
->
last_height
=
height
;
s
->
last_ch
=
cheight
;
...
...
@@ -1412,6 +1415,8 @@ static void vga_draw_graphic(VGAState *s, int full_update)
if
(
disp_width
!=
s
->
last_width
||
height
!=
s
->
last_height
)
{
dpy_resize
(
s
->
ds
,
disp_width
,
height
);
s
->
last_scr_width
=
disp_width
;
s
->
last_scr_height
=
height
;
s
->
last_width
=
disp_width
;
s
->
last_height
=
height
;
full_update
=
1
;
...
...
@@ -1494,6 +1499,33 @@ static void vga_draw_graphic(VGAState *s, int full_update)
}
}
static
void
vga_draw_blank
(
VGAState
*
s
,
int
full_update
)
{
int
i
,
w
,
val
;
uint8_t
*
d
;
if
(
!
full_update
)
return
;
if
(
s
->
last_scr_width
<=
0
||
s
->
last_scr_height
<=
0
)
return
;
if
(
s
->
ds
->
depth
==
8
)
val
=
s
->
rgb_to_pixel
(
0
,
0
,
0
);
else
val
=
0
;
w
=
s
->
last_scr_width
*
((
s
->
ds
->
depth
+
7
)
>>
3
);
d
=
s
->
ds
->
data
;
for
(
i
=
0
;
i
<
s
->
last_scr_height
;
i
++
)
{
memset
(
d
,
val
,
w
);
d
+=
s
->
ds
->
linesize
;
}
dpy_update
(
s
->
ds
,
0
,
0
,
s
->
last_scr_width
,
s
->
last_scr_height
);
}
#define GMODE_TEXT 0
#define GMODE_GRAPH 1
#define GMODE_BLANK 2
void
vga_update_display
(
void
)
{
VGAState
*
s
=
&
vga_state
;
...
...
@@ -1519,15 +1551,27 @@ void vga_update_display(void)
}
full_update
=
0
;
graphic_mode
=
s
->
gr
[
6
]
&
1
;
if
(
!
(
s
->
ar_index
&
0x20
))
{
graphic_mode
=
GMODE_BLANK
;
}
else
{
graphic_mode
=
s
->
gr
[
6
]
&
1
;
}
if
(
graphic_mode
!=
s
->
graphic_mode
)
{
s
->
graphic_mode
=
graphic_mode
;
full_update
=
1
;
}
if
(
graphic_mode
)
vga_draw_graphic
(
s
,
full_update
);
else
switch
(
graphic_mode
)
{
case
GMODE_TEXT
:
vga_draw_text
(
s
,
full_update
);
break
;
case
GMODE_GRAPH
:
vga_draw_graphic
(
s
,
full_update
);
break
;
case
GMODE_BLANK
:
default:
vga_draw_blank
(
s
,
full_update
);
break
;
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录