shailesh / pyglet

Automatically exported from code.google.com/p/pyglet
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

Fullscreen window with explicit config has incorrect initial location. #331

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?

1. Dual-monitor setup, different-sized monitors (larger as primary)
2. Execute the code below:

import pyglet
platform = pyglet.window.get_platform()
display = platform.get_default_display();
screens = display.get_screens()

configs = []

for screen in display.get_screens():
    print screen
    configs.append(screen.get_best_config(pyglet.gl.Config
(double_buffer=True)))

window = pyglet.window.Window(fullscreen=True, config=configs[-1])
print window.get_location()
print window.get_size()

Output:
Win32Screen(x=0, y=0, width=1680, height=1050)
Win32Screen(x=1680, y=280, width=1024, height=768)
(1680, 280)
(1680, 1050)

Expected output:
Win32Screen(x=0, y=0, width=1680, height=1050)
Win32Screen(x=1680, y=280, width=1024, height=768)
(1680, 280)
(1024, 768)

Manually specifying the screen as well as the config produces the expected 
size of (1024, 768):

window = pyglet.window.Window(fullscreen=True, screen=screens[-1], 
config=configs[-1])

Python
---------------------------------------------------------------------------

---
sys.version: 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit 
(Intel)
sys.platform: win32
os.getcwd(): <elided>

pyglet
---------------------------------------------------------------------------

---
pyglet.version: 1.1
pyglet.__file__: C:\Python25\lib\site-packages\pyglet\__init__.pyc
pyglet.options['debug_trace_depth'] = 1
pyglet.options['audio'] = ('directsound', 'openal', 'alsa', 'silent')
pyglet.options['xsync'] = True
pyglet.options['debug_trace_flush'] = True
pyglet.options['debug_win32'] = False
pyglet.options['debug_gl_trace'] = False
pyglet.options['debug_x11'] = False
pyglet.options['shadow_window'] = True
pyglet.options['debug_font'] = False
pyglet.options['debug_media'] = False
pyglet.options['debug_trace'] = False
pyglet.options['debug_lib'] = False
pyglet.options['graphics_vbo'] = True
pyglet.options['vsync'] = None
pyglet.options['debug_trace_args'] = False
pyglet.options['debug_gl'] = True
pyglet.options['debug_graphics_batch'] = False
pyglet.options['font'] = ('gdiplus', 'win32')
pyglet.options['debug_texture'] = False
pyglet.options['debug_gl_trace_args'] = False

pyglet.window
---------------------------------------------------------------------------

---
platform: <pyglet.window.win32.Win32Platform object at 0x00D39790>
display: <pyglet.window.win32.Win32Display object at 0x00D39770>
screens[0]: Win32Screen(x=0, y=0, width=1680, height=1050)
screens[1]: Win32Screen(x=1680, y=280, width=1024, height=768)
config['double_buffer'] = True
config['stereo'] = False
config['buffer_size'] = 32
config['aux_buffers'] = 4
config['sample_buffers'] = 0
config['samples'] = 0
config['red_size'] = 8
config['green_size'] = 8
config['blue_size'] = 8
config['alpha_size'] = 0
config['depth_size'] = 24
config['stencil_size'] = 0
config['accum_red_size'] = 16
config['accum_green_size'] = 16
config['accum_blue_size'] = 16
config['accum_alpha_size'] = 16
context: Win32Context()

pyglet.gl.gl_info
---------------------------------------------------------------------------

---
gl_info.get_version(): 1.5.3
gl_info.get_vendor(): NVIDIA Corporation
gl_info.get_renderer(): Quadro NVS 285/PCI/SSE2
gl_info.get_extensions():
   GL_ARB_depth_texture
   GL_ARB_fragment_program
   GL_ARB_fragment_program_shadow
   GL_ARB_fragment_shader
   GL_ARB_imaging
   GL_ARB_multisample
   GL_ARB_multitexture
   GL_ARB_occlusion_query
   GL_ARB_point_parameters
   GL_ARB_point_sprite
   GL_ARB_shader_objects
   GL_ARB_shading_language_100
   GL_ARB_shadow
   GL_ARB_texture_border_clamp
   GL_ARB_texture_compression
   GL_ARB_texture_cube_map
   GL_ARB_texture_env_add
   GL_ARB_texture_env_combine
   GL_ARB_texture_env_dot3
   GL_ARB_texture_mirrored_repeat
   GL_ARB_texture_non_power_of_two
   GL_ARB_texture_rectangle
   GL_ARB_transpose_matrix
   GL_ARB_vertex_buffer_object
   GL_ARB_vertex_program
   GL_ARB_vertex_shader
   GL_ARB_window_pos
   GL_ATI_draw_buffers
   GL_ATI_texture_float
   GL_ATI_texture_mirror_once
   GL_EXT_Cg_shader
   GL_EXT_abgr
   GL_EXT_bgra
   GL_EXT_blend_color
   GL_EXT_blend_equation_separate
   GL_EXT_blend_func_separate
   GL_EXT_blend_minmax
   GL_EXT_blend_subtract
   GL_EXT_compiled_vertex_array
   GL_EXT_depth_bounds_test
   GL_EXT_draw_range_elements
   GL_EXT_fog_coord
   GL_EXT_multi_draw_arrays
   GL_EXT_packed_pixels
   GL_EXT_pixel_buffer_object
   GL_EXT_point_parameters
   GL_EXT_rescale_normal
   GL_EXT_secondary_color
   GL_EXT_separate_specular_color
   GL_EXT_shadow_funcs
   GL_EXT_stencil_clear_tag
   GL_EXT_stencil_two_side
   GL_EXT_stencil_wrap
   GL_EXT_texture3D
   GL_EXT_texture_compression_s3tc
   GL_EXT_texture_cube_map
   GL_EXT_texture_edge_clamp
   GL_EXT_texture_env_add
   GL_EXT_texture_env_combine
   GL_EXT_texture_env_dot3
   GL_EXT_texture_filter_anisotropic
   GL_EXT_texture_lod
   GL_EXT_texture_lod_bias
   GL_EXT_texture_mirror_clamp
   GL_EXT_texture_object
   GL_EXT_vertex_array
   GL_HP_occlusion_test
   GL_IBM_rasterpos_clip
   GL_IBM_texture_mirrored_repeat
   GL_KTX_buffer_region
   GL_NVX_conditional_render
   GL_NV_blend_square
   GL_NV_copy_depth_to_color
   GL_NV_depth_clamp
   GL_NV_fence
   GL_NV_float_buffer
   GL_NV_fog_distance
   GL_NV_fragment_program
   GL_NV_fragment_program2
   GL_NV_fragment_program_option
   GL_NV_half_float
   GL_NV_light_max_exponent
   GL_NV_multisample_filter_hint
   GL_NV_occlusion_query
   GL_NV_packed_depth_stencil
   GL_NV_pixel_data_range
   GL_NV_point_sprite
   GL_NV_primitive_restart
   GL_NV_register_combiners
   GL_NV_register_combiners2
   GL_NV_texgen_reflection
   GL_NV_texture_compression_vtc
   GL_NV_texture_env_combine4
   GL_NV_texture_expand_normal
   GL_NV_texture_rectangle
   GL_NV_texture_shader
   GL_NV_texture_shader2
   GL_NV_texture_shader3
   GL_NV_vertex_array_range
   GL_NV_vertex_array_range2
   GL_NV_vertex_program
   GL_NV_vertex_program1_1
   GL_NV_vertex_program2
   GL_NV_vertex_program2_option
   GL_NV_vertex_program3
   GL_S3_s3tc
   GL_SGIS_generate_mipmap
   GL_SGIS_texture_lod
   GL_SGIX_depth_texture
   GL_SGIX_shadow
   GL_SUN_slice_accum
   GL_WIN_swap_hint
   WGL_EXT_swap_control

pyglet.gl.glu_info
---------------------------------------------------------------------------

---
glu_info.get_version(): 1.2.2.0 Microsoft Corporation
glu_info.get_extensions():
   GL_EXT_bgra

pyglet.gl.glx_info
---------------------------------------------------------------------------

---
GLX not available.

pyglet.media
---------------------------------------------------------------------------

---
driver: pyglet.media.drivers.directsound

pyglet.media.avbin
---------------------------------------------------------------------------

---
Library: <CDLL 'avbin', handle 6e440000 at f63630>
AVbin version: 5
FFmpeg revision: 13661

pyglet.media.drivers.openal
---------------------------------------------------------------------------

---
OpenAL not available.

Original issue reported on code.google.com by timothy....@gmail.com on 18 Aug 2008 at 3:22

GoogleCodeExporter commented 9 years ago
This behaviour of screen selection is expected: configs are not specific to a 
screen
(though a screen may support only a certain subset of configs).  If this were 
not the
case, a window created on one screen would not be able to be moved onto the 
other.

However, the location of the window in the first example looks incorrect (it 
should
be on screen 0 at 0,0).

Original comment by Alex.Hol...@gmail.com on 18 Aug 2008 at 3:54

GoogleCodeExporter commented 9 years ago
It's definitely creating the window on the second screen (but with the 
dimensions of 
the default screen), so there's definitely a bug there - it should be using one 
or 
the other of the screens.

Is the expected behaviour if you only pass a config (or context I guess) to 
create 
the window on the default screen? If so, it looks like there's a documentation 
bug:

http://pyglet.org/doc/api/pyglet.window.Window-class.html#__init__

"The display, screen, config and context parameters form a hierarchy of 
control: 
there is no need to specify more than one of these. For example, if you specify 
screen the display will be inferred, and a default config and context will be 
created."

Original comment by timothy....@gmail.com on 18 Aug 2008 at 4:05

GoogleCodeExporter commented 9 years ago
Thanks, documentation for Window clarified in r2212 (trunk) and r2213 
(1.1-maintenance).

Original comment by Alex.Hol...@gmail.com on 24 Aug 2008 at 4:34

GoogleCodeExporter commented 9 years ago
Sorry, your initial report was correct; configs do keep a reference to their 
screen.
 I've reverted the documentation changes in r2212/3 and fixed the specific case of
initializing Window with a config and no screen in r2214/5.

Original comment by Alex.Hol...@gmail.com on 24 Aug 2008 at 4:54