
    \
j(                        d dl Z d dl T d dlmZ d dlmZ ddlmZmZmZm	Z	 ddl
mZ  G d d	e          Zd d
lmZ 	 d dlmZ dZn	#  dZY nxY w	 d dlmZ dZn	#  dZY nxY w	 d dlmZ dZn	#  dZY nxY wd Z ej        e          Z ej        e            G d dee          Z G d de          Z G d de          Z G d de	          ZdS )    N)*)app)XlibSelectDevice   )DisplayScreen
ScreenModeCanvas)xlib_vidmoderestorec                       e Zd ZdS )NoSuchDisplayExceptionN)__name__
__module____qualname__     L/DATA/AppData/hermes/venv/lib/python3.11/site-packages/pyglet/canvas/xlib.pyr   r   0   s        Dr   r   )xlib)xineramaTF)xsync)	xf86vmodec                    dd l }|j        d         r|j        }t          d          }t	          j        | |j        |t          |                     t          d|j	                   t          d|j
                   t          d|j                   t          d|j                   t          d|j                   dd l}t          d	           |                                 dS )
Nr   	debug_x11i   z
X11 error:z
   serial:z
  request:z
    minor:z
 resource:z$Python stack trace (innermost last):)pygletoptionscontentsc_bufferr   XGetErrorText
error_codelenprintvalueserialrequest_code
minor_code
resourceid	tracebackprint_stack)displayeventr   bufr'   s        r   _error_handlerr,   M   s     MMM~k"  tnn7E$4c3s88DDDlCI&&&lEL)))lE.///lE,---lE,---45551r   c                   H     e Zd ZdZdZdZdZd fd	Zd Zd Z	d Z
d Z xZS )	XlibDisplayNFc                    |d}t          |t                    r"t          |                    d                    }t	          j        |          | _        | j        st          d|z            t	          j        | j                  }||k    rt          d||fz            t          t          |                                            || _        || _        t	          j        | j                  | _        i | _        t"          rt%                      }t%                      }t'          j        | j        t+          |          t+          |                    rXt%                      }t%                      }t'          j        | j        t+          |          t+          |                    rd| _        t0          j        j                            |            d S )Nr   asciizCannot connect to "%s"zDisplay "%s" has no screen %dT)
isinstancestrc_char_pencoder   XOpenDisplay_displayr   XScreenCountsuperr.   __init__namex_screenXConnectionNumber_fileno_window_map_have_xsyncc_intr   XSyncQueryExtensionbyrefXSyncInitialize_enable_xsyncr   platform_event_loop_select_devicesadd)	selfr:   r;   screen_count
event_base
error_basemajor_versionminor_version	__class__s	           r   r9   zXlibDisplay.__init__r   s   HdC   	2DKK0011D)$//} 	J()AD)HIII(77|##(/42BBD D D 	k4  ))+++	 -dm<<  	.JJ().z):):).z):):< < . !& %().})=)=).})=)=? ? . *.D& 	/33D99999r   c                    | j         r| j         S t          rt          j        | j                  rt                      }t          j        | j        t          |                    }t          |t          t          j
        |j        z                      j        }g | _         |j        dk    }|D ]B}| j                             t          | |j        |j        |j        |j        |                     Ct'          j        |           nOt'          j        | j        | j                  }t          | dd|j        j        |j        j        d          }|g| _         | j         S )Nr   r   F)_screens_have_xineramar   XineramaIsActiver6   r@   XineramaQueryScreensrB   castPOINTERXineramaScreenInfor"   r   append
XlibScreenx_orgy_orgwidthheightr   XFreeXScreenOfDisplayr;   )rH   numberinfosusing_xineramainfoscreen_infoscreens          r   get_screenszXlibDisplay.get_screens   sa   = 	!=  	%h7FF 	%WWF1$-27--A AE !<v|!KLLN NNV DM#\A-N A A$$Z04
04
04
040>&@ &@ A A A A Ju /t}MMK !1 + 4 : + 4 ; %	' 'F
 $HDM}r   c                     | j         S N)r=   rH   s    r   filenozXlibDisplay.fileno   s
    |r   c                    t          j                    }t          j        | j                  rt          j        | j        |           |j        j        t           j        t           j        fvr t          j	        ||j        j
                  rw	 | j        |j        j
                 }n# t          $ r Y w xY w ||           t          j        | j                  d S d S rg   )r   XEventXPendingr6   
XNextEventxanytypeKeyPress
KeyReleaseXFilterEventwindowr>   KeyError)rH   edispatchs      r   selectzXlibDisplay.select   s    KMMmDM** 	ODM1--- v{4=$/"BBB$Q66 +AFM:    HQKKK mDM** 	 	 	 	 	s   B$ $
B10B1c                 4    t          j        | j                  S rg   )r   rl   r6   rh   s    r   pollzXlibDisplay.poll   s    }T]+++r   )NN)r   r   r   r6   _x_imrD   rP   r9   re   ri   rw   ry   __classcell__rN   s   @r   r.   r.   j   s        HEMH&: &: &: &: &: &:P  B    ", , , , , , ,r   r.   c                   F     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
 xZS )	rX   Nc                 n    t          t          |                               |||||           || _        d S rg   )r8   rX   r9   	_xinerama)rH   r)   xyr[   r\   r   rN   s          r   r9   zXlibScreen.__init__   s4    j$((!QvFFF!r   c                 r    t          | j        d           }|                    |          }|D ]	}| |_        
|S rg   )
XlibCanvasr)   matchrd   )rH   templatecanvasconfigsconfigs        r   get_matching_configszXlibScreen.get_matching_configs   sA    DL$//..(( 	! 	!F FMMr   c                    t           sg S | j        rg S t          j                    } t          j        t          j        t
          j                                        }t          j        | j        j	        | j        j
        ||           g }t          |j                  D ]}t          j                    }t          j        t          j        |          t          j        |j        |                   t          j        |                     |                    t%          | |                     |j        rt)          j        |j                   t)          j        |           |S rg   )_have_xf86vmoder   ctypesr@   rU   r   XF86VidModeModeInfoXF86VidModeGetAllModeLinesr)   r6   r;   ranger"   memmoverB   r   sizeofrW   XlibScreenModeprivsizer   r]   private)rH   count
info_arraymodesirb   s         r   	get_modeszXlibScreen.get_modes   s=    	I> 	 IIFN6>)*GHHIIKK 	,L!4<#8%	M 	M 	M u{## 	) 	)A022DN6<--!<
(;A(>??!=..0 0 0 LLd33444} )
4<(((
:r   c                 B    |                                  }|r|d         S d S Nr   )r   )rH   r   s     r   get_modezXlibScreen.get_mode   s'       	8Otr   c                    |j         | u sJ | j        s2|                                 | _        t          j        | j                   t          j        | j        j        | j        j	        |j
                   t          j        | j        j                   t          j        | j        j        | j        j	        dd           t          j        | j        j                   |j        | _        |j        | _        d S r   )rd   _initial_moder   r   set_initial_moder   XF86VidModeSwitchToModer)   r6   r;   rb   r   XFlushXF86VidModeSetViewPortr[   r\   )rH   modes     r   set_modezXlibScreen.set_mode  s    {d""""! 	E!%D01CDDD)$,*?AVX\XabbbDL)***()>@UWXZ[\\\DL)***Z
kr   c                 L    | j         r|                     | j                    d S d S rg   )r   r   rh   s    r   restore_modezXlibScreen.restore_mode  s2     	.MM$,-----	. 	.r   c                 T    d| j         | j        | j        | j        | j        | j        fz  S )NzDXlibScreen(display=%r, x=%d, y=%d, width=%d, height=%d, xinerama=%d))r)   r   r   r[   r\   r   rh   s    r   __repr__zXlibScreen.__repr__  s0    3dfdfdj$+   	 r   )r   r   r   r   r9   r   r   r   r   r   r   r{   r|   s   @r   rX   rX      s        M" " " " "    <  " " ". . .             r   rX   c                        e Zd Z fdZ xZS )r   c                     t          t          |                               |           || _        |j        | _        |j        | _        |j        | _	        d | _
        d S rg   )r8   r   r9   rb   hdisplayr[   vdisplayr\   dotclockratedepth)rH   rd   rb   rN   s      r   r9   zXlibScreenMode.__init__!  sN    nd##,,V444	]
mM	


r   r   r   r   r9   r{   r|   s   @r   r   r      s8                r   r   c                        e Zd Z fdZ xZS )r   c                 f    t          t          |                               |           || _        d S rg   )r8   r   r9   x_window)rH   r)   r   rN   s      r   r9   zXlibCanvas.__init__+  s,    j$((111 r   r   r|   s   @r   r   r   *  s8        ! ! ! ! ! ! ! ! !r   r   )r   r   r   pyglet.app.xlibr   baser   r   r	   r
    r   	Exceptionr   pyglet.libs.x11r   r   rQ   r   r?   r   r   r,   XErrorHandler_error_handler_ptrXSetErrorHandlerr.   rX   r   r   r   r   r   <module>r      sD  H            , , , , , , 5 5 5 5 5 5 5 5 5 5 5 5 ! ! ! ! ! !
	 	 	 	 	Y 	 	 	 !          ((((((NNNNN%%%%%%KKKKK))))))OOOOO  2 (T'77   ( ) ) )f, f, f, f, f,"G f, f, f,RJ  J  J  J  J  J  J  J Z    Z   ! ! ! ! ! ! ! ! ! !s#   A AA A"A+ +A1