コード例 #1
0
ファイル: quartztoggler.cpp プロジェクト: skidr0w/gambatte
void QuartzToggler::emitRate() {
	double rate = 0.0;

	CFNumberGetValue(static_cast<CFNumberRef>(CFDictionaryGetValue(CGDisplayCurrentMode(activeDspys[widgetScreen]), kCGDisplayRefreshRate)), kCFNumberDoubleType, &rate);

	emit rateChange(static_cast<int>(rate * 10.0 + 0.5));
}
コード例 #2
0
void XRandRToggler::setFullMode(const bool enable) {
    SizeID currentID = XRRConfigCurrentConfiguration(config, &rotation);
    int currentRate = XRRConfigCurrentRate(config);

    SizeID newID;
    int newRate;

    if (enable) {
        newID = fullResIndex;
        newRate = infoVector[fullResIndex].rates[fullRateIndex] / 10;

        if (!isFull) {
            originalResIndex = currentID;
            originalRate = currentRate;
        }
    } else {
        newID = originalResIndex;
        newRate = originalRate;
    }

    if (newID != currentID || newRate != currentRate) {
        XRRSetScreenConfigAndRate(QX11Info::display(), config, QX11Info::appRootWindow(), newID, rotation, newRate, CurrentTime);

        if (newRate != currentRate)
            emit rateChange(newRate * 10);
    }

    isFull = enable;
}
コード例 #3
0
ファイル: quartztoggler.cpp プロジェクト: skidr0w/gambatte
void QuartzToggler::setFullMode(const bool enable) {
	CGDirectDisplayID display = activeDspys[widgetScreen];
	CFDictionaryRef currentMode = CGDisplayCurrentMode(display);

	CFDictionaryRef mode = currentMode;

	if (enable) {
		int bpp = 0;
		CFNumberGetValue(static_cast<CFNumberRef>(CFDictionaryGetValue(currentMode, kCGDisplayBitsPerPixel)), kCFNumberIntType, &bpp);

		mode = CGDisplayBestModeForParametersAndRefreshRate(
			display,
			bpp,
			infoVector[widgetScreen][fullResIndex[widgetScreen]].w,
			infoVector[widgetScreen][fullResIndex[widgetScreen]].h,
			infoVector[widgetScreen][fullResIndex[widgetScreen]].rates[fullRateIndex[widgetScreen]] / 10.0,
			NULL
		);

		if (!isFull)
			originalMode = currentMode;
	} else if (isFull)
		mode = originalMode;

	if (mode != currentMode) {
		CGDisplaySwitchToMode(display, mode);

		double oldRate = 0.0;
		double newRate = 0.0;

		CFNumberGetValue(static_cast<CFNumberRef>(CFDictionaryGetValue(currentMode, kCGDisplayRefreshRate)), kCFNumberDoubleType, &oldRate);
		CFNumberGetValue(static_cast<CFNumberRef>(CFDictionaryGetValue(mode, kCGDisplayRefreshRate)), kCFNumberDoubleType, &newRate);

		if (static_cast<int>(oldRate * 10.0 + 0.5) != static_cast<int>(newRate * 10.0 + 0.5))
			emit rateChange(static_cast<int>(newRate * 10.0 + 0.5));
	}

	isFull = enable;
}
コード例 #4
0
ファイル: mainwindow.cpp プロジェクト: Veala/Led
void MainWindow::ServerOperations(QByteArray data)
{
    QString Line(data);
    QStringList dataList = Line.split(" ");
    bool tf=false;
    QTcpSocket* clientTcpSocket = (QTcpSocket*)sender();
    for (int i=0;i<Commands.size();i++)
        if (dataList[0] == Commands[i]) tf=true;
    if (!tf) {
        messageTo = "FAILED\n";
        sendToClient(clientTcpSocket,messageTo);
        return;
    }
    QStringList typeCommand = dataList[0].split("-");
    if (typeCommand[0]=="set") {
        dataList[1].chop(1);
        if (typeCommand[2]=="state")        stateChange(dataList[1]);
        else if (typeCommand[2]=="color")   colorChange(dataList[1]);
        else if (typeCommand[2]=="rate")    rateChange(dataList[1]);
    } else  if (typeCommand[0]=="get") {
        typeCommand[2].chop(1);
        if (typeCommand[2]=="state") {
            messageTo = "OK " + state + "\n";
            sendToClient(clientTcpSocket,messageTo);
        } else if (typeCommand[2]=="color") {
            messageTo = "OK " + color.name() + "\n";
            sendToClient(clientTcpSocket,messageTo);
        } else if (typeCommand[2]=="rate") {
            messageTo = "OK " + QString::number(rate) + "\n";
            sendToClient(clientTcpSocket,messageTo);
        } else {
            messageTo = "FAILED\n";
            sendToClient(clientTcpSocket,messageTo);
        }
    }
}
コード例 #5
0
void *connection_handler(void *socket_desc)
{   
    //Variables
	int loggedState;
    int sock = *(int*)socket_desc;
	int pin_int = 0;
	int read_size;
    int num_err;
    struct sockaddr_in addr;
	Protocol_struct client_message;
	Protocol_struct server_msg;
    char clientip[20];
	char filename[256];
	char *fileURL;
	char *message;
	char *client_msg;
	
	//Initialise Pointers
	fileURL = filename;
	client_msg = (char*) &client_message;
	message = "Client Connected!!!\r\n";

	loggedState = LOGGED_OFF;
    socklen_t addr_size = sizeof(struct sockaddr_in);
    getpeername(sock, (struct sockaddr *)&addr, &addr_size);
    strcpy(clientip, inet_ntoa(addr.sin_addr)); 
	
    //Send some messages to the client
    write(sock , message , strlen(message));
     
    //Receive a message from client
    while( (read_size = recv(sock , (char *)&client_message , sizeof(client_message) , 0)) > 0 )
    {
			num_err=0;
			//convert Device Pin to int
			pin_int = charbcd2int(client_message);
			if ((pin_int > 9999) || (pin_int < 0)) {
				//update to invalid PIN number
				printf("Invalid PIN number\r\n");
				num_err = 1;
			}
			//print out message received for debugging
			puts("---------------------------------------------------");
			//printf("Pin (chars) = %d,%d,%d,%d\r\n", client_message.Pin_1, client_message.Pin_2, client_message.Pin_3, client_message.Pin_4);
			printf("Thread = %d || Pin (int) = %d || Function = %d\r\n", sock, pin_int, client_message.Function);
			//printf("Function = %d\r\n", client_message.Function);
			//printf("Language %d\r\n", client_message.Language);
			//printf("Difficulty = %d\r\n", client_message.Difficulty);
			//printf("Exhibit = %d\r\n", client_message.Exhibit);
			puts("---------------------------------------------------");
			
			//switch based on the function value
			if (num_err == 0) {
				switch(client_message.Function)
				{
					case LOGON:
						if (loggedState != LOGGED_ON)
						{
							num_err = logon(pin_int);
							if (num_err == 0)
							{
								data[pin_int].HostName = clientip;
								loggedState = LOGGED_ON;
							}
							else 
							{
								//update to failed logon number
								printf("Failed to logon\r\n");
								num_err = 100;
							}
						}
						else
						{
							//update to already logged on number
							printf("Already logged on\r\n");
							num_err = 101;
						}
						break;
					case LOGOFF:
						if (loggedState == LOGGED_ON)
						{
							num_err = logoff(pin_int);
							if (num_err == 0)
							{
								loggedState = LOGGED_OFF;
							}
							else 
							{
								//update to failed logoff number
								printf("Failed to logoff\r\n");
								num_err = 1;
							}
						}
						else
						{
							//update to already logged off number
							printf("Already logged off\r\n");
							num_err = 1;
						}
						break;
					case PLAY:		
						if (loggedState == LOGGED_ON)
						{
							num_err = playtoggle(pin_int);
						}
						else
						{
							printf("Device is not logged on");
							num_err = 102;
						}
						break;
					case PAUSE:
						if (loggedState == LOGGED_ON)
						{
							num_err = playtoggle(pin_int);
						}
						else
						{
							printf("Device is not logged on");
							num_err = 102;
						}
						break;
					case REWIND:
						if (loggedState == LOGGED_ON)
						{
							num_err = rateChange(pin_int,-3);
						}
						else
						{
							printf("Device is not logged on");
							num_err = 102;
						}
						break;
					case FAST_FORWARD:
						if (loggedState == LOGGED_ON)
						{
							num_err = rateChange(pin_int,3);
						}
						else
						{
							printf("Device is not logged on");
							num_err = 102;
						}
						break;
					case REWIND_STOP:
						if (loggedState == LOGGED_ON)
						{
							num_err = rateChange(pin_int,1);
						}
						else
						{
							printf("Device is not logged on");
							num_err = 102;
						}
						break;
					case FAST_FORWARD_STOP:
						if (loggedState == LOGGED_ON)
						{
							num_err = rateChange(pin_int,1);
						}
						else
						{
							printf("Device is not logged on");
							num_err = 102;
						}
						break;
					case FILE_REQ:
						if (loggedState == LOGGED_ON)
						{
							num_err = getFileFromDB(client_message.Exhibit,client_message.Language, client_message.Difficulty, fileURL);// needs to interact with database
							if (num_err != 0)
							{
								break;
							}
							num_err = buildPipeline(fileURL, &data[pin_int]);
						}
						else
						{
							printf("Device is not logged on");
							num_err = 102;
						}
						break;
					default :
						printf("Unknown Command - %d\r\n",client_message.Function);
						//update to unknown command number
						num_err = 104;
				}
			}

		//generate standard response
		server_msg.Pin_1 = client_message.Pin_1;
		server_msg.Pin_2 = client_message.Pin_2;
		server_msg.Pin_3 = client_message.Pin_3;
		server_msg.Pin_4 = client_message.Pin_4;
		server_msg.Function = SRV_RESPONSE;
		server_msg.Language = 0;
		server_msg.Difficulty = 0;
		server_msg.Exhibit = num_err;
		//convert to char array
		//client_message[4] = server_msg.Function;
		//Send the message back to client
		
		client_msg = (char*) &server_msg;
        write(sock , client_msg , sizeof(server_msg));
		
		
		
	
		//set messages to 0 so they can be repopulated
		memset(&client_message, 0, sizeof(client_message));
		memset(&server_msg, 0, sizeof(server_msg));
    }
    //If nothing is read from the socket (as blocking function used will only return zero when disconnected) 
    if(read_size == 0)
    {
        printf("Client disconnected from socket %d\r\n", sock);
        fflush(stdout);
    }
    else if(read_size == -1) //
    {
        printf("Failed to receive data from socket %d\r\n", sock);
    }
         
    return 0;
}
コード例 #6
0
void XRandRToggler::emitRate() {
    emit rateChange(XRRConfigCurrentRate(config) * 10);
}