示例#1
0
文件: vrpn_Mutex.C 项目: ASPePeX/vrpn
void vrpn_PeerMutex::release(void)
{
    int i;

    // Can't release it if we don't already have it.
    // There aren't any appropriate callbacks to trigger here.  :)
    if (!isHeldLocally()) {

#ifdef VERBOSE
        fprintf(stderr, "vrpn_PeerMutex::release:  we don't hold the mutex.\n");
#endif

        return;
    }

    d_state = AVAILABLE;
    d_holderIP = 0;
    d_holderPort = -1;
    for (i = 0; i < d_numPeers; i++) {
        sendRelease(d_peer[i]);
    }

    triggerReleaseCallbacks();

#ifdef VERBOSE
    fprintf(stderr, "vrpn_PeerMutex::release:  released the mutex.\n");
#endif
}
示例#2
0
void SurfaceBuffer::destructBufferState()
{
    destroyTexture();

    if (m_buffer) {
        sendRelease();

        if (m_handle) {
            if (m_shmBuffer) {
                delete static_cast<QImage *>(m_handle);
#ifdef QT_COMPOSITOR_WAYLAND_GL
            } else {
                QWaylandClientBufferIntegration *hwIntegration = m_compositor->clientBufferIntegration();
                hwIntegration->unlockNativeBuffer(m_handle, 0);
#endif
            }
        }
        wl_list_remove(&m_destroy_listener.listener.link);
    }
    m_buffer = 0;
    m_handle = 0;
    m_committed = false;
    m_is_registered_for_buffer = false;
    m_is_displayed = false;
    m_image = QImage();
}
示例#3
0
void MaekawaAlgorithm::enterCriticalSection(){
	printf("\n\n******Node '%d' in CRITICAL SECTION******\n\n",processID);
	flagforCS =true;
    char buff[4095];
	sprintf(buff,"Node %d entered CS, Seq: %ld \n",processID,sequenceNo);
	writeToFile("Resource.txt",buff);

    sleep(1);
    hasCompletedCriticalSection = true;
    hasSentLockedMessage = false;
    
    printf("----Queue size before remove is: %d\n", queue->size());
    queue->remove(processID);
    
    printf("----Queue size after remove is: %d\n", queue->size());
    printf("----Node %d has delete itself from the queue\n",processID);
    printf("----Node %d has received 0 locked message\n",processID);
    printf("----Node %d has exited its critical section\n",processID);
    printf("********************************************\n");
    
    //reset quorumVote Table
    printf("--^^--quorumVote Table--^^-- \n");
    
    for(int i = 0; i < quorumsize; i++){
        quorumVote[i][1] = 0;
        printf("%d , %d \n",quorumVote[i][0],quorumVote[i][1]);
    }
    sendRelease();
    

}
void SurfaceBuffer::destructBufferState()
{
    if (m_buffer) {
        if (m_committed)
            sendRelease();
        wl_list_remove(&m_destroy_listener.listener.link);
    }
    m_buffer = 0;
    m_committed = false;
    m_is_registered_for_buffer = false;
    m_is_displayed = false;
}
示例#5
0
文件: vrpn_Mutex.C 项目: Progga1/vrpn
void vrpn_Mutex_Remote::release (void) {
  if (!isHeldLocally()) {
    return;
  }

#ifdef VERBOSE
  fprintf(stderr, "Releasing mutex.\n");
#endif

  d_state = AVAILABLE;
  sendRelease();
  triggerReleaseCallbacks();
}