예제 #1
0
        private const int keyCooldownTime = 75;//ms

        public KeyRepaintQueue(CancellationToken token)
        {
            KeyInfo        = new KeyBitmapHolder[HidClient.numOfKeys];
            allWaitHandles = new WaitHandle[HidClient.numOfKeys + 1];

            for (int i = 0; i < 15; i++)
            {
                var holder = new KeyBitmapHolder();
                KeyInfo[i]        = holder;
                allWaitHandles[i] = holder.dirtyEvent;
            }

            allWaitHandles[exitCode] = token.WaitHandle;
            cancelWaitHandle         = token.WaitHandle;
        }
예제 #2
0
        public void Enqueue(int keyId, byte[] data)
        {
            lock (listLock)
            {
                if (keyIndex[keyId] == null)
                {
                    //enque
                    keyQueue.Enqueue(keyId);
                    keyIndex[keyId] = new KeyBitmapHolder();
                    waiter.Release();
                }

                //update
                keyIndex[keyId].bitmapData = data;
            }
        }