97 lines
1.9 KiB
C++
97 lines
1.9 KiB
C++
/* tag: openbios qt user interface
|
|
*
|
|
* Copyright (C) 2003-2004 Stefan Reinauer
|
|
*
|
|
* See the file "COPYING" for further information about
|
|
* the copyright and warranty status of this work.
|
|
*/
|
|
|
|
|
|
extern "C" {
|
|
#include <pthread.h>
|
|
#include <unistd.h>
|
|
#include "unix/plugins.h"
|
|
#include "unix/plugin_pci.h"
|
|
}
|
|
#include "gui-qt.h"
|
|
|
|
#define DEBUG
|
|
|
|
volatile unsigned char * fb=0;
|
|
volatile int gui_running=0;
|
|
|
|
typedef struct {
|
|
int argc;
|
|
char **argv;
|
|
} threaddata;
|
|
|
|
void *gui_thread(void *ptr)
|
|
{
|
|
threaddata *td=(threaddata *)ptr;
|
|
|
|
QApplication a(td->argc, td->argv);
|
|
FrameBufferWidget w;
|
|
|
|
a.setMainWidget(&w);
|
|
w.show();
|
|
|
|
fb=w.getFrameBuffer();
|
|
|
|
gui_running=-1;
|
|
a.exec();
|
|
gui_running=0;
|
|
|
|
return 0;
|
|
}
|
|
|
|
extern "C" {
|
|
extern int plugin_qt_init(void);
|
|
int plugin_qt_init(void)
|
|
{
|
|
pthread_t mythread;
|
|
char *args[]={ "plugin_qt" };
|
|
threaddata mytd = { 1, args };
|
|
|
|
#ifdef DEBUG
|
|
printf("Initializing \"framebuffer\" plugin...");
|
|
#endif
|
|
pthread_create(&mythread, NULL, gui_thread, &mytd);
|
|
while (!fb)
|
|
usleep(20);
|
|
|
|
#if 0
|
|
|
|
/* now we have the framebuffer start address.
|
|
* updating pci config space to reflect this
|
|
*/
|
|
#if (BITS > 32)
|
|
*(u32 *)(pci_config_space+0x14)=(u32)((unsigned long)fb>>32);
|
|
#else
|
|
*(u32 *)(pci_config_space+0x14)=0;
|
|
#endif
|
|
*(u32 *)(pci_config_space+0x10)=(u32)((unsigned long)fb&0xffffffff);
|
|
|
|
/* next is to write the rom address. We write that at a random
|
|
* address in pci config space for now.
|
|
*/
|
|
#if (BITS > 32)
|
|
*(u32 *)(pci_config_space+0x34)=(u32)((unsigned long)qt_fcode>>32);
|
|
#else
|
|
*(u32 *)(pci_config_space+0x34)=0;
|
|
#endif
|
|
*(u32 *)(pci_config_space+0x30)=(u32)((unsigned long)qt_fcode&0xffffffff);
|
|
|
|
/* FIXME: we need to put the fcode image for this
|
|
* device to the rom resource, once it exists
|
|
*/
|
|
|
|
/* register pci device to be available to beginagain */
|
|
pci_register_device(0, 2, 0, pci_config_space);
|
|
#endif
|
|
#ifdef DEBUG
|
|
printf("done.\n");
|
|
#endif
|
|
return 0;
|
|
}
|
|
|
|
}
|