Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot open fullscreen on secondary monitor #667

Open
GoogleCodeExporter opened this issue Apr 6, 2015 · 4 comments
Open

Cannot open fullscreen on secondary monitor #667

GoogleCodeExporter opened this issue Apr 6, 2015 · 4 comments

Comments

@GoogleCodeExporter
Copy link

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
Copy link
Author

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
Copy link
Author

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

  • Changed state: Accepted
  • Added labels: Type-Defect

@GoogleCodeExporter
Copy link
Author

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
Copy link
Author

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

  • Added labels: OpSys-OSX

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant