
    ^j                     ^    d dl Z ddlmZ d dlmZmZmZmZ d dlm	Z	m
Z
  G d de          ZdS )    N   )PlatformEventLoop)	_kernel32_user32types	constants)HANDLETIMECAPSc                   V     e Zd Z fdZd Zd Zd Zd ZddZd Z	d	 Z
d
 Zd Z xZS )Win32EventLoopc                 N   t                                                       d | _        t          j                    }t          j        t          j        |          dt          j
        t          j
        t          j                   t          j                    | _        g | _        |                                  t          j        | j                  | _        t          j        ddt          j        | j                  | _        d | _        t          j                            d          | _        t7                      }| j                            t          j        |          t          j        |                     t=          t?          d|j                   |j!                  | _"        d S )Nr   winmmr   )#super__init___next_idle_timer   MSGr   PeekMessageWctypesbyrefr   WM_USERPM_NOREMOVEr   GetCurrentThreadId_event_thread_wait_objects_recreate_wait_objects_array	TIMERPROC_timer_proc_func_timer_procSetTimerUSER_TIMER_MAXIMUM_timer_timer_funcwindllLoadLibrary_winmmr
   timeGetDevCapssizeofminmax
wPeriodMin
wPeriodMax_timer_precision)selfmsgtimecaps	__class__s      K/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/app/win32.pyr   zWin32EventLoop.__init__
   s@   #
 ikkV\#..&.	0A&2	4 	4 	4 '9;;))+++ ?4+@AA&q!Y-I4K[\\ m//88::""6<#9#96=;R;RSSS #C8+>$?$?AT U U    c                 f    | j                             ||f           |                                  d S N)r   appendr   )r-   objfuncs      r1   add_wait_objectzWin32EventLoop.add_wait_object'   s5    !!3+...))+++++r2   c                     t          | j                  D ]\  }\  }}||k    r
| j        |=  n|                                  d S r4   )	enumerater   r   )r-   r6   i_object_s        r1   remove_wait_objectz!Win32EventLoop.remove_wait_object+   s\    ();<< 	 	OA|g~~&q)  	))+++++r2   c                     | j         sd| _        d | _        d S t          | j                   | _        t	          | j        z  d | j         D              | _        d S )Nr   c                     g | ]\  }}|S  rA   ).0ofs      r1   
<listcomp>z?Win32EventLoop._recreate_wait_objects_array.<locals>.<listcomp>9   s    DfDfDf41aQDfDfDfr2   )r   _wait_objects_n_wait_objects_arraylenr	   r-   s    r1   r   z+Win32EventLoop._recreate_wait_objects_array2   sc    ! 	#$D '+D$F"4#566$*T-A$ADfDfSWSeDfDfDf#g   r2   c                     t          j                    | j        k    rt          d          d | _        | j                            | j                   d S )NzKEventLoop.run() must be called from the same thread that imports pyglet.app)r   r   r   RuntimeErrorr"   r%   timeBeginPeriodr,   rI   s    r1   startzWin32EventLoop.start;   s]    '))T-???  @ A A A  ##D$9:::::r2   Nc                    |                                   t          j                    }|t          j        }nt          |dz            }t          j        | j        | j	        d|t          j
                  }|t          j        z  }|| j        k    rt          j        t          j        |          dddt          j                  rt          j        t          j        |                     t          j        t          j        |                     t          j        t          j        |          dddt          j                  n/d|cxk    r| j        k     rn n| j        |         \  }} |             || j        k    S )N  Fr   )dispatch_posted_eventsr   r   r   INFINITEintr   MsgWaitForMultipleObjectsrF   rG   QS_ALLINPUTWAIT_OBJECT_0r   r   r   	PM_REMOVETranslateMessageDispatchMessageWr   )r-   timeoutr.   resultr6   r7   s         r1   stepzWin32EventLoop.stepD   sp   ##%%%ikk?(GG'D.))G2 $!# # 	)))T)))&v|C'8'8'(!Q	0CE E <(c):):;;;(c):):;;; &v|C'8'8'(!Q	0CE E < &////4//////*62ICDFFF ---r2   c                 D    | j                             | j                   d S r4   )r%   timeEndPeriodr,   rI   s    r1   stopzWin32EventLoop.stopa   s!    !!$"788888r2   c                 R    t          j        | j        t          j        dd           d S )Nr   )r   PostThreadMessageWr   r   r   rI   s    r1   notifyzWin32EventLoop.notifyd   s'    
 	"4#5y7H!QOOOOOr2   c                     ||t           j        }nt          |dz            }|| _        t	          j        d| j        || j                   d S )NrO   r   )r   r    rR   r"   r   r   r!   r   )r-   r7   intervals      r1   	set_timerzWin32EventLoop.set_timerk   sQ    <8+ 3HH8d?++HDK43CDDDDDr2   c                 @    | j         r|                                   d S d S r4   )r"   )r-   hwndr.   timerts        r1   r   zWin32EventLoop._timer_proc_funct   s/     		 	r2   r4   )__name__
__module____qualname__r   r8   r>   r   rM   r[   r^   ra   rd   r   __classcell__)r0   s   @r1   r   r   	   s        V V V V V:, , ,, , ,h h h; ; ;. . . .:9 9 9P P PE E E      r2   r   )r   baser   pyglet.libs.win32r   r   r   r   pyglet.libs.win32.typesr	   r
   r   rA   r2   r1   <module>rp      s     # # # # # # B B B B B B B B B B B B 4 4 4 4 4 4 4 4m m m m m& m m m m mr2   