Mercurial > mplayer.hg
comparison libvo/vo_dga.c @ 7515:72dd0b05d562
DGA1 fix by Fredrik Noring <noring@nocrew.org>
author | arpi |
---|---|
date | Fri, 27 Sep 2002 20:48:06 +0000 |
parents | 5dd2cdd760fa |
children | abc3b12165b7 |
comparison
equal
deleted
inserted
replaced
7514:d71300143887 | 7515:72dd0b05d562 |
---|---|
684 | 684 |
685 | 685 |
686 | 686 |
687 //--------------------------------------------------------- | 687 //--------------------------------------------------------- |
688 | 688 |
689 static void init_video_buffers(XDGAMode *modeline, uint8_t *buffer_base, | 689 static void init_video_buffers(uint8_t *buffer_base, |
690 int view_port_height, | |
691 int bytes_per_scanline, | |
692 int max_view_port_y, | |
690 int use_multiple_buffers) | 693 int use_multiple_buffers) |
691 { | 694 { |
692 int bytes_per_buffer = | 695 int bytes_per_buffer = view_port_height * bytes_per_scanline; |
693 modeline->viewportHeight * modeline->bytesPerScanline; | |
694 int i; | 696 int i; |
695 | 697 |
696 if(use_multiple_buffers) | 698 if(use_multiple_buffers) |
697 vo_dga_nr_video_buffers = | 699 vo_dga_nr_video_buffers = max_view_port_y / view_port_height; |
698 modeline->pixmapHeight / modeline->viewportHeight; | |
699 else | 700 else |
700 vo_dga_nr_video_buffers = 1; | 701 vo_dga_nr_video_buffers = 1; |
701 | 702 |
702 vo_dga_current_video_buffer = 0; | 703 vo_dga_current_video_buffer = 0; |
703 | 704 |
704 if(MAX_NR_VIDEO_BUFFERS < vo_dga_nr_video_buffers) | 705 if(MAX_NR_VIDEO_BUFFERS < vo_dga_nr_video_buffers) |
705 vo_dga_nr_video_buffers = MAX_NR_VIDEO_BUFFERS; | 706 vo_dga_nr_video_buffers = MAX_NR_VIDEO_BUFFERS; |
706 | 707 |
707 for(i = 0; i < vo_dga_nr_video_buffers; i++) | 708 for(i = 0; i < vo_dga_nr_video_buffers; i++) |
708 { | 709 { |
709 vo_dga_video_buffer[i].y = i * modeline->viewportHeight; | 710 vo_dga_video_buffer[i].y = i * view_port_height; |
710 vo_dga_video_buffer[i].data = | 711 vo_dga_video_buffer[i].data = |
711 buffer_base + i * bytes_per_buffer; | 712 buffer_base + i * bytes_per_buffer; |
712 | 713 |
713 // Clear video buffer. | 714 // Clear video buffer. |
714 memset(vo_dga_video_buffer[i].data, 0, bytes_per_buffer); | 715 memset(vo_dga_video_buffer[i].data, 0, bytes_per_buffer); |
728 int modecount, mX=VO_DGA_INVALID_RES, mY=VO_DGA_INVALID_RES , mVBI=100000, mMaxY=0, i,j=0; | 729 int modecount, mX=VO_DGA_INVALID_RES, mY=VO_DGA_INVALID_RES , mVBI=100000, mMaxY=0, i,j=0; |
729 int dga_modenum; | 730 int dga_modenum; |
730 XDGAMode *modelines=NULL, *modeline; | 731 XDGAMode *modelines=NULL, *modeline; |
731 XDGADevice *dgadevice; | 732 XDGADevice *dgadevice; |
732 unsigned char *vo_dga_base; | 733 unsigned char *vo_dga_base; |
733 int max_vpy_pos; | |
734 #else | 734 #else |
735 #ifdef HAVE_XF86VM | 735 #ifdef HAVE_XF86VM |
736 unsigned int vm_event, vm_error; | 736 unsigned int vm_event, vm_error; |
737 unsigned int vm_ver, vm_rev; | 737 unsigned int vm_ver, vm_rev; |
738 int i, j=0, have_vm=0; | 738 int i, j=0, have_vm=0; |
864 height = scale_dstH; | 864 height = scale_dstH; |
865 } | 865 } |
866 | 866 |
867 vo_dga_width = modelines[j].bytesPerScanline / HW_MODE.vdm_bytespp ; | 867 vo_dga_width = modelines[j].bytesPerScanline / HW_MODE.vdm_bytespp ; |
868 dga_modenum = modelines[j].num; | 868 dga_modenum = modelines[j].num; |
869 max_vpy_pos = modelines[j].maxViewportY; | |
870 modeline = modelines + j; | 869 modeline = modelines + j; |
871 | 870 |
872 XFree(modelines); | 871 XFree(modelines); |
873 modelines = NULL; | 872 modelines = NULL; |
874 | 873 |
1040 GrabModeAsync,GrabModeAsync, CurrentTime); | 1039 GrabModeAsync,GrabModeAsync, CurrentTime); |
1041 XGrabPointer (vo_dga_dpy, DefaultRootWindow(vo_dga_dpy), True, | 1040 XGrabPointer (vo_dga_dpy, DefaultRootWindow(vo_dga_dpy), True, |
1042 ButtonPressMask,GrabModeAsync, GrabModeAsync, | 1041 ButtonPressMask,GrabModeAsync, GrabModeAsync, |
1043 None, None, CurrentTime); | 1042 None, None, CurrentTime); |
1044 | 1043 |
1045 init_video_buffers(modeline, vo_dga_base, vo_doublebuffering); | 1044 init_video_buffers(vo_dga_base, |
1045 vo_dga_vp_height, | |
1046 vo_dga_width * HW_MODE.vdm_bytespp, | |
1047 #if HAVE_DGA2 | |
1048 modeline->maxViewportY, | |
1049 #else | |
1050 vo_dga_vp_height, | |
1051 #endif | |
1052 vo_doublebuffering); | |
1046 | 1053 |
1047 mp_msg(MSGT_VO, MSGL_V, "vo_dga: Using %d frame buffer%s.\n", | 1054 mp_msg(MSGT_VO, MSGL_V, "vo_dga: Using %d frame buffer%s.\n", |
1048 vo_dga_nr_video_buffers, vo_dga_nr_video_buffers == 1 ? "" : "s"); | 1055 vo_dga_nr_video_buffers, vo_dga_nr_video_buffers == 1 ? "" : "s"); |
1049 | 1056 |
1050 vo_dga_is_running = 1; | 1057 vo_dga_is_running = 1; |