Exemplo n.º 1
0
int ca_open(phastream_t *as, char *name, int rate, int framesize, ph_audio_cbk cbk) {
	int errInput, errOutput;
	
	ca_dev *cadev = (ca_dev *) calloc(1, sizeof(ca_dev));

	DBG_DYNA_AUDIO_DRV("phad_coreaudio: ca_open: Opening device %s with rate: %d, framesize: %d, and callback: %p\n",
		  name, rate, framesize, cbk);

	cadev->cbk = cbk;

	as->drvinfo = cadev;

	parse_device(cadev, name);

	as->actual_rate = rate;
	errInput = init_input_device(as, rate, 1, 16); //FIXME: channels and format should be given by phapi
	errOutput = init_output_device(as, rate, 1, 16);

	if (errOutput < 0)
	{
		DBG_DYNA_AUDIO_DRV("phad_coreaudio: could not init output device");
		clean_input_device(as);
		return -PH_NORESOURCES;
	}

	DBG_DYNA_AUDIO_DRV("**CoreAudio: actual_rate: %d, clock_rate: %d\n", as->actual_rate, rate);

	return 0;
}
Exemplo n.º 2
0
int main(int argc, char *argv[])
{
    int fd;

    GtkWidget *window;
    GtkWidget *drawing_area;
    GtkWidget *vbox;
    GtkWidget *hbox;
    GtkWidget *button;
    
    /* Block SIGALRM in the main thread */
    sigset_t sigset;
    sigemptyset(&sigset);
    sigaddset(&sigset, SIGALRM);
    pthread_sigmask(SIG_BLOCK, &sigset, NULL);
    
    if (!g_thread_supported()) {
        g_thread_init(NULL);
    }

    gdk_threads_init();
    gdk_threads_enter();
    
    gtk_init(&argc, &argv);

    /* Framebuffer */
    
    /* Open framebuffer */
    if (0 > (fd = open("/dev/fb0", O_RDWR))) {
        printf("Failed to open fb\n");
        return -1;
    }

    /* Get fixed information */
    if(0 > ioctl(fd, FBIOGET_FSCREENINFO, &fi)) {
        printf("Failed to get fixed info\n");
        return -1;
    }

    /* Get variable information */
    if(0 > ioctl(fd, FBIOGET_VSCREENINFO, &vi)) {
        printf("Failed to get variable info\n");
        return -1;
    }

    /* Get raw bits buffer */
    if(MAP_FAILED == (bits = mmap(0, fi.smem_len,
                              PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0))) {
        printf("Failed to mmap fb\n");
        return -1;
    }

    printf("Framebuffer resolution: %d x %d\n", vi.xres, vi.yres);

    /* Calculate useful information */
    bpp = vi.bits_per_pixel >> 3;
    stride = fi.line_length / bpp;

    /* Do GTK stuff */
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title((GtkWindow*)window, "ParallelDroid");
    g_signal_connect(window, "destroy", G_CALLBACK(destroy), NULL);

    vbox = gtk_vbox_new(FALSE, 0);
    gtk_container_add(GTK_CONTAINER(window), vbox);
    gtk_widget_show(vbox);

    drawing_area = gtk_drawing_area_new();
    gtk_widget_set_size_request(GTK_WIDGET(drawing_area), vi.xres, vi.yres);
    gtk_box_pack_start(GTK_BOX(vbox), drawing_area, TRUE, TRUE, 0);
    gtk_widget_show(drawing_area);
    
    init_input_device();

    /* Events */
    gtk_widget_set_events(drawing_area, GDK_EXPOSURE_MASK
                          | GDK_LEAVE_NOTIFY_MASK
                          | GDK_BUTTON_PRESS_MASK
                          | GDK_BUTTON_RELEASE_MASK
                          | GDK_POINTER_MOTION_MASK
                          | GDK_POINTER_MOTION_HINT_MASK);

    g_signal_connect(drawing_area, "motion-notify-event",
                     G_CALLBACK (motion_notify_event), NULL);
    g_signal_connect(drawing_area, "button-press-event",
                     G_CALLBACK(button_press_event), NULL);
    g_signal_connect(drawing_area, "button-release-event",
                     G_CALLBACK(button_release_event), NULL);
    g_signal_connect(drawing_area, "expose-event",
                     G_CALLBACK(expose_event), NULL);
    g_signal_connect(drawing_area, "configure-event",
                     G_CALLBACK(configure_event), NULL);
                     
    /* Create and add buttons */
    hbox = gtk_hbox_new(FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
    gtk_widget_show(hbox);
                     
    button = gtk_button_new_with_label("Back");
    gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
    g_signal_connect(button, "clicked",
                     G_CALLBACK(back_button_clicked), NULL);
    gtk_widget_show(button);
    
    button = gtk_button_new_with_label("Home");
    gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
    g_signal_connect_swapped(button, "clicked",
                             G_CALLBACK(home_button_clicked), NULL);
    gtk_widget_show(button);
    
    button = gtk_button_new_with_label("Menu");
    gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
    g_signal_connect_swapped(button, "clicked",
                             G_CALLBACK(menu_button_clicked), NULL);
    gtk_widget_show(button);

    gtk_widget_show_all(window);

    pixmap = gdk_pixmap_new(drawing_area->window, IMAGE_WIDTH, 
                            IMAGE_HEIGHT, -1);

    (void)g_timeout_add(33, (GSourceFunc)timer_exe, drawing_area);

    gtk_main();
    gdk_threads_leave();
    
    return 0;
}