google-code-export / pyglet

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

Cannot open fullscreen on secondary monitor #667

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Run the following script:

---
import pyglet

platform = pyglet.window.get_platform()
display = platform.get_default_display()

def on_draw():
    window.clear()

for screen in display.get_screens():
    window = pyglet.window.Window(fullscreen=True, screen=screen)
    window.on_draw = on_draw

pyglet.app.run()

---

Paste in the traceback or error message:

This script creates two fullscreen windows -- however, both windows are created 
on the "primary" display (the display with the Mac menubar/launchpad). 

The script also generates some warnings on the console, but I believe these may 
be related to a separate issue (See #666).

pyglet 1.2alpha1 with Python 2.7: Paste in the output of `python -m pyglet.info`

Python
------------------------------------------------------------------------------
sys.version: 2.7.5 (default, Sep 15 2013, 13:25:14) 
[GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))]
sys.platform: darwin
sys.maxint: 9223372036854775807
PyObjC not available
os.getcwd(): /Users/rkm/projects/beeware/box

pyglet
------------------------------------------------------------------------------
pyglet.version: 1.2alpha1
pyglet.__file__: 
/Users/rkm/.virtualenvs/box/lib/python2.7/site-packages/pyglet/__init__.pyc
pyglet.options['debug_win32'] = False
pyglet.options['xlib_fullscreen_override_redirect'] = False
pyglet.options['debug_trace_args'] = False
pyglet.options['font'] = ('gdiplus', 'win32')
pyglet.options['debug_gl_trace_args'] = False
pyglet.options['debug_trace'] = False
pyglet.options['debug_gl_trace'] = False
pyglet.options['debug_x11'] = False
pyglet.options['debug_media'] = False
pyglet.options['debug_trace_depth'] = 1
pyglet.options['vsync'] = None
pyglet.options['debug_gl'] = True
pyglet.options['darwin_cocoa'] = True
pyglet.options['debug_trace_flush'] = True
pyglet.options['shadow_window'] = True
pyglet.options['xsync'] = True
pyglet.options['debug_font'] = False
pyglet.options['graphics_vbo'] = True
pyglet.options['debug_lib'] = False
pyglet.options['debug_graphics_batch'] = False
pyglet.options['audio'] = ('directsound', 'pulse', 'openal', 'silent')
pyglet.options['debug_texture'] = False

pyglet.window
------------------------------------------------------------------------------
platform: <pyglet.window.Platform object at 0x101ef69d0>
display: <pyglet.canvas.cocoa.CocoaDisplay object at 0x102780b50>
screens[0]: CocoaScreen(x=0, y=0, width=1920, height=1200)
screens[1]: CocoaScreen(x=-1440, y=0, width=1440, height=900)
config['double_buffer'] = 1
config['stereo'] = 0
config['buffer_size'] = 32
config['aux_buffers'] = 0
config['sample_buffers'] = 0
config['samples'] = 0
config['red_size'] = 0
config['green_size'] = 0
config['blue_size'] = 0
config['alpha_size'] = 8
config['depth_size'] = 24
config['stencil_size'] = 0
config['accum_red_size'] = 0
config['accum_green_size'] = 0
config['accum_blue_size'] = 0
config['accum_alpha_size'] = 0
config['major_version'] = None
config['minor_version'] = None
config['forward_compatible'] = None
config['debug'] = None
context: CocoaContext()

window.context._info
------------------------------------------------------------------------------
gl_info.get_version(): 2.1 NVIDIA-8.12.47 310.40.00.05f01
gl_info.get_vendor(): NVIDIA Corporation
gl_info.get_renderer(): NVIDIA GeForce GT 650M OpenGL Engine
gl_info.get_extensions():
   GL_APPLE_aux_depth_stencil
   GL_APPLE_client_storage
   GL_APPLE_element_array
   GL_APPLE_fence
   GL_APPLE_float_pixels
   GL_APPLE_flush_buffer_range
   GL_APPLE_flush_render
   GL_APPLE_object_purgeable
   GL_APPLE_packed_pixels
   GL_APPLE_pixel_buffer
   GL_APPLE_rgb_422
   GL_APPLE_row_bytes
   GL_APPLE_specular_vector
   GL_APPLE_texture_range
   GL_APPLE_transform_hint
   GL_APPLE_vertex_array_object
   GL_APPLE_vertex_array_range
   GL_APPLE_vertex_point_size
   GL_APPLE_vertex_program_evaluators
   GL_APPLE_ycbcr_422
   GL_ARB_color_buffer_float
   GL_ARB_depth_buffer_float
   GL_ARB_depth_clamp
   GL_ARB_depth_texture
   GL_ARB_draw_buffers
   GL_ARB_draw_elements_base_vertex
   GL_ARB_draw_instanced
   GL_ARB_fragment_program
   GL_ARB_fragment_program_shadow
   GL_ARB_fragment_shader
   GL_ARB_framebuffer_object
   GL_ARB_framebuffer_sRGB
   GL_ARB_half_float_pixel
   GL_ARB_half_float_vertex
   GL_ARB_imaging
   GL_ARB_instanced_arrays
   GL_ARB_multisample
   GL_ARB_multitexture
   GL_ARB_occlusion_query
   GL_ARB_pixel_buffer_object
   GL_ARB_point_parameters
   GL_ARB_point_sprite
   GL_ARB_provoking_vertex
   GL_ARB_seamless_cube_map
   GL_ARB_shader_objects
   GL_ARB_shader_texture_lod
   GL_ARB_shading_language_100
   GL_ARB_shadow
   GL_ARB_sync
   GL_ARB_texture_border_clamp
   GL_ARB_texture_compression
   GL_ARB_texture_compression_rgtc
   GL_ARB_texture_cube_map
   GL_ARB_texture_env_add
   GL_ARB_texture_env_combine
   GL_ARB_texture_env_crossbar
   GL_ARB_texture_env_dot3
   GL_ARB_texture_float
   GL_ARB_texture_mirrored_repeat
   GL_ARB_texture_non_power_of_two
   GL_ARB_texture_rectangle
   GL_ARB_texture_rg
   GL_ARB_transpose_matrix
   GL_ARB_vertex_array_bgra
   GL_ARB_vertex_blend
   GL_ARB_vertex_buffer_object
   GL_ARB_vertex_program
   GL_ARB_vertex_shader
   GL_ARB_window_pos
   GL_ATI_separate_stencil
   GL_ATI_texture_env_combine3
   GL_ATI_texture_float
   GL_ATI_texture_mirror_once
   GL_EXT_abgr
   GL_EXT_bgra
   GL_EXT_bindable_uniform
   GL_EXT_blend_color
   GL_EXT_blend_equation_separate
   GL_EXT_blend_func_separate
   GL_EXT_blend_minmax
   GL_EXT_blend_subtract
   GL_EXT_clip_volume_hint
   GL_EXT_depth_bounds_test
   GL_EXT_draw_buffers2
   GL_EXT_draw_range_elements
   GL_EXT_fog_coord
   GL_EXT_framebuffer_blit
   GL_EXT_framebuffer_multisample
   GL_EXT_framebuffer_multisample_blit_scaled
   GL_EXT_framebuffer_object
   GL_EXT_framebuffer_sRGB
   GL_EXT_geometry_shader4
   GL_EXT_gpu_program_parameters
   GL_EXT_gpu_shader4
   GL_EXT_multi_draw_arrays
   GL_EXT_packed_depth_stencil
   GL_EXT_packed_float
   GL_EXT_provoking_vertex
   GL_EXT_rescale_normal
   GL_EXT_secondary_color
   GL_EXT_separate_specular_color
   GL_EXT_shadow_funcs
   GL_EXT_stencil_two_side
   GL_EXT_stencil_wrap
   GL_EXT_texture_array
   GL_EXT_texture_compression_dxt1
   GL_EXT_texture_compression_s3tc
   GL_EXT_texture_env_add
   GL_EXT_texture_filter_anisotropic
   GL_EXT_texture_integer
   GL_EXT_texture_lod_bias
   GL_EXT_texture_mirror_clamp
   GL_EXT_texture_rectangle
   GL_EXT_texture_sRGB
   GL_EXT_texture_sRGB_decode
   GL_EXT_texture_shared_exponent
   GL_EXT_timer_query
   GL_EXT_transform_feedback
   GL_EXT_vertex_array_bgra
   GL_IBM_rasterpos_clip
   GL_NV_blend_square
   GL_NV_conditional_render
   GL_NV_depth_clamp
   GL_NV_fog_distance
   GL_NV_fragment_program2
   GL_NV_fragment_program_option
   GL_NV_light_max_exponent
   GL_NV_multisample_filter_hint
   GL_NV_point_sprite
   GL_NV_texgen_reflection
   GL_NV_vertex_program2_option
   GL_NV_vertex_program3
   GL_SGIS_generate_mipmap
   GL_SGIS_texture_edge_clamp
   GL_SGIS_texture_lod

pyglet.gl.glu_info
------------------------------------------------------------------------------
glu_info.get_version(): 1.3 MacOSX
glu_info.get_extensions():

pyglet.gl.glx_info
------------------------------------------------------------------------------
GLX not available.

pyglet.media
------------------------------------------------------------------------------
audio driver: <pyglet.media.drivers.openal.OpenALDriver object at 0x104f37410>

pyglet.media.avbin
------------------------------------------------------------------------------
AVbin not available.

pyglet.media.drivers.openal
------------------------------------------------------------------------------
Library: <CDLL '/System/Library/Frameworks/OpenAL.framework/OpenAL', handle 
7f9ac4d18610 at 104f40490>
Version: (1, 1)
Extensions:
   ALC_EXT_CAPTURE
   ALC_ENUMERATION_EXT
   ALC_EXT_MAC_OSX
   ALC_EXT_ASA
   ALC_EXT_ASA_DISTORTION
   ALC_EXT_ASA_ROGER_BEEP

pyglet.input.wintab
------------------------------------------------------------------------------
WinTab not available.

Any additional info (platform/language/hardware) that may be relevant?

Running under OSX Mountain Lion (10.8) on a late 2012 15" Retina MacBook Pro; a 
second monitor is attached to my laptop.

From a quick look at the pyglet source code, this looks like it might be a 
known problem (comments around line 153 of pyglet/window/cocoa/__init__.py). 
However, I couldn't see any bug tracking this issue.

Original issue reported on code.google.com by freakboy...@gmail.com on 26 Sep 2013 at 8:17

GoogleCodeExporter commented 9 years ago
Interestingly, the following code *does* work:
---
import pyglet

platform = pyglet.window.get_platform()
display = platform.get_default_display()

def on_draw():
    window.clear()

for screen in display.get_screens():
    print screen
    window = pyglet.window.Window()
    window.on_draw = on_draw

    window.set_fullscreen(screen=screen)

pyglet.app.run()
---
i.e., if you set the window to fullscreen *after* it has been created, it works 
fine. It's the screen argument to the window constructor that doesn't work as 
expected.

Original comment by freakboy...@gmail.com on 27 Sep 2013 at 2:07

GoogleCodeExporter commented 9 years ago
That's interesting. In my experience there's a big difference between starting 
the window in fullscreen and setting fullscreen after creating it, for example: 
the callbacks (1 on_resize in first case, 2 on the second).

I'll investigate, may be I can get the same behaviour in both cases.

It would be really helpful if you could upgrade to the latest repo code. You 
can do it in two different ways:

 - with pip:

pip install --upgrade http://pyglet.googlecode.com/archive/tip.zip

 - download the latest code from: http://pyglet.googlecode.com/archive/tip.zip
   and install it with the usual setup.py command.

Thanks for the report!

Original comment by useboxnet on 28 Sep 2013 at 8:50

GoogleCodeExporter commented 9 years ago
I've just tried reproducing with tip (304c4b1dc7f1), and I get the same 
behavior -- opening both windows in fullscreen mode results in both windows 
opening on the primary monitor.

Something else that occurred to me that *might* make a difference - my setup 
has the "primary" monitor set up as the external monitor (so, the mac menu bar 
is displayed on the external monitor).

Original comment by freakboy...@gmail.com on 30 Sep 2013 at 12:32

GoogleCodeExporter commented 9 years ago
Thanks for the follow up!

I just tried your script in Linux with the repo code and works as expected. I 
configured the external display to be the primary display and no difference.

This was Ubuntu Precise with Unity but at least we can discard is a general 
problem but something specific to Mac.

Original comment by useboxnet on 30 Sep 2013 at 7:09