Adding upstream version 1:10.0.2+ds.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
This commit is contained in:
parent
bf2768bd0f
commit
ea34ddeea6
37998 changed files with 9510514 additions and 0 deletions
227
include/ui/gtk.h
Normal file
227
include/ui/gtk.h
Normal file
|
@ -0,0 +1,227 @@
|
|||
#ifndef UI_GTK_H
|
||||
#define UI_GTK_H
|
||||
|
||||
/* Work around an -Wstrict-prototypes warning in GTK headers */
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wstrict-prototypes"
|
||||
#include <gtk/gtk.h>
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
#include <gdk/gdkx.h>
|
||||
#include <X11/XKBlib.h>
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_WAYLAND
|
||||
#include <gdk/gdkwayland.h>
|
||||
#endif
|
||||
|
||||
#include "ui/clipboard.h"
|
||||
#include "ui/console.h"
|
||||
#include "ui/kbd-state.h"
|
||||
#if defined(CONFIG_OPENGL)
|
||||
#include "ui/egl-helpers.h"
|
||||
#include "ui/egl-context.h"
|
||||
#endif
|
||||
#ifdef CONFIG_VTE
|
||||
#include "qemu/fifo8.h"
|
||||
#endif
|
||||
|
||||
#define MAX_VCS 10
|
||||
|
||||
typedef struct GtkDisplayState GtkDisplayState;
|
||||
|
||||
typedef struct VirtualGfxConsole {
|
||||
GtkWidget *drawing_area;
|
||||
DisplayGLCtx dgc;
|
||||
DisplayChangeListener dcl;
|
||||
QKbdState *kbd;
|
||||
DisplaySurface *ds;
|
||||
pixman_image_t *convert;
|
||||
cairo_surface_t *surface;
|
||||
double scale_x;
|
||||
double scale_y;
|
||||
#if defined(CONFIG_OPENGL)
|
||||
QemuGLShader *gls;
|
||||
EGLContext ectx;
|
||||
EGLSurface esurface;
|
||||
int glupdates;
|
||||
int x, y, w, h;
|
||||
egl_fb guest_fb;
|
||||
egl_fb win_fb;
|
||||
egl_fb cursor_fb;
|
||||
int cursor_x;
|
||||
int cursor_y;
|
||||
bool y0_top;
|
||||
bool scanout_mode;
|
||||
bool has_dmabuf;
|
||||
#endif
|
||||
} VirtualGfxConsole;
|
||||
|
||||
#if defined(CONFIG_VTE)
|
||||
typedef struct VirtualVteConsole {
|
||||
GtkWidget *box;
|
||||
GtkWidget *scrollbar;
|
||||
GtkWidget *terminal;
|
||||
Chardev *chr;
|
||||
Fifo8 out_fifo;
|
||||
bool echo;
|
||||
} VirtualVteConsole;
|
||||
#endif
|
||||
|
||||
typedef enum VirtualConsoleType {
|
||||
GD_VC_GFX,
|
||||
GD_VC_VTE,
|
||||
} VirtualConsoleType;
|
||||
|
||||
typedef struct VirtualConsole {
|
||||
GtkDisplayState *s;
|
||||
char *label;
|
||||
GtkWidget *window;
|
||||
GtkWidget *menu_item;
|
||||
GtkWidget *tab_item;
|
||||
GtkWidget *focus;
|
||||
VirtualConsoleType type;
|
||||
union {
|
||||
VirtualGfxConsole gfx;
|
||||
#if defined(CONFIG_VTE)
|
||||
VirtualVteConsole vte;
|
||||
#endif
|
||||
};
|
||||
} VirtualConsole;
|
||||
|
||||
struct GtkDisplayState {
|
||||
GtkWidget *window;
|
||||
|
||||
GtkWidget *menu_bar;
|
||||
|
||||
GtkAccelGroup *accel_group;
|
||||
|
||||
GtkWidget *machine_menu_item;
|
||||
GtkWidget *machine_menu;
|
||||
GtkWidget *pause_item;
|
||||
GtkWidget *reset_item;
|
||||
GtkWidget *powerdown_item;
|
||||
GtkWidget *quit_item;
|
||||
|
||||
GtkWidget *view_menu_item;
|
||||
GtkWidget *view_menu;
|
||||
GtkWidget *full_screen_item;
|
||||
GtkWidget *copy_item;
|
||||
GtkWidget *zoom_in_item;
|
||||
GtkWidget *zoom_out_item;
|
||||
GtkWidget *zoom_fixed_item;
|
||||
GtkWidget *zoom_fit_item;
|
||||
GtkWidget *grab_item;
|
||||
GtkWidget *grab_on_hover_item;
|
||||
|
||||
int nb_vcs;
|
||||
VirtualConsole vc[MAX_VCS];
|
||||
|
||||
GtkWidget *show_tabs_item;
|
||||
GtkWidget *untabify_item;
|
||||
GtkWidget *show_menubar_item;
|
||||
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *notebook;
|
||||
int button_mask;
|
||||
gboolean last_set;
|
||||
int last_x;
|
||||
int last_y;
|
||||
int grab_x_root;
|
||||
int grab_y_root;
|
||||
VirtualConsole *kbd_owner;
|
||||
VirtualConsole *ptr_owner;
|
||||
|
||||
gboolean full_screen;
|
||||
|
||||
GdkCursor *null_cursor;
|
||||
Notifier mouse_mode_notifier;
|
||||
gboolean free_scale;
|
||||
|
||||
bool external_pause_update;
|
||||
|
||||
QemuClipboardPeer cbpeer;
|
||||
uint32_t cbpending[QEMU_CLIPBOARD_SELECTION__COUNT];
|
||||
GtkClipboard *gtkcb[QEMU_CLIPBOARD_SELECTION__COUNT];
|
||||
bool cbowner[QEMU_CLIPBOARD_SELECTION__COUNT];
|
||||
|
||||
DisplayOptions *opts;
|
||||
};
|
||||
|
||||
extern bool gtk_use_gl_area;
|
||||
|
||||
/* ui/gtk.c */
|
||||
void gd_update_windowsize(VirtualConsole *vc);
|
||||
void gd_update_monitor_refresh_rate(VirtualConsole *vc, GtkWidget *widget);
|
||||
void gd_hw_gl_flushed(void *vc);
|
||||
|
||||
/* ui/gtk-egl.c */
|
||||
void gd_egl_init(VirtualConsole *vc);
|
||||
void gd_egl_draw(VirtualConsole *vc);
|
||||
void gd_egl_update(DisplayChangeListener *dcl,
|
||||
int x, int y, int w, int h);
|
||||
void gd_egl_refresh(DisplayChangeListener *dcl);
|
||||
void gd_egl_switch(DisplayChangeListener *dcl,
|
||||
DisplaySurface *surface);
|
||||
QEMUGLContext gd_egl_create_context(DisplayGLCtx *dgc,
|
||||
QEMUGLParams *params);
|
||||
void gd_egl_scanout_disable(DisplayChangeListener *dcl);
|
||||
void gd_egl_scanout_texture(DisplayChangeListener *dcl,
|
||||
uint32_t backing_id,
|
||||
bool backing_y_0_top,
|
||||
uint32_t backing_width,
|
||||
uint32_t backing_height,
|
||||
uint32_t x, uint32_t y,
|
||||
uint32_t w, uint32_t h,
|
||||
void *d3d_tex2d);
|
||||
void gd_egl_scanout_dmabuf(DisplayChangeListener *dcl,
|
||||
QemuDmaBuf *dmabuf);
|
||||
void gd_egl_cursor_dmabuf(DisplayChangeListener *dcl,
|
||||
QemuDmaBuf *dmabuf, bool have_hot,
|
||||
uint32_t hot_x, uint32_t hot_y);
|
||||
void gd_egl_cursor_position(DisplayChangeListener *dcl,
|
||||
uint32_t pos_x, uint32_t pos_y);
|
||||
void gd_egl_flush(DisplayChangeListener *dcl,
|
||||
uint32_t x, uint32_t y, uint32_t w, uint32_t h);
|
||||
void gd_egl_scanout_flush(DisplayChangeListener *dcl,
|
||||
uint32_t x, uint32_t y, uint32_t w, uint32_t h);
|
||||
void gtk_egl_init(DisplayGLMode mode);
|
||||
int gd_egl_make_current(DisplayGLCtx *dgc,
|
||||
QEMUGLContext ctx);
|
||||
|
||||
/* ui/gtk-gl-area.c */
|
||||
void gd_gl_area_init(VirtualConsole *vc);
|
||||
void gd_gl_area_draw(VirtualConsole *vc);
|
||||
void gd_gl_area_update(DisplayChangeListener *dcl,
|
||||
int x, int y, int w, int h);
|
||||
void gd_gl_area_refresh(DisplayChangeListener *dcl);
|
||||
void gd_gl_area_switch(DisplayChangeListener *dcl,
|
||||
DisplaySurface *surface);
|
||||
QEMUGLContext gd_gl_area_create_context(DisplayGLCtx *dgc,
|
||||
QEMUGLParams *params);
|
||||
void gd_gl_area_destroy_context(DisplayGLCtx *dgc,
|
||||
QEMUGLContext ctx);
|
||||
void gd_gl_area_scanout_dmabuf(DisplayChangeListener *dcl,
|
||||
QemuDmaBuf *dmabuf);
|
||||
void gd_gl_area_scanout_texture(DisplayChangeListener *dcl,
|
||||
uint32_t backing_id,
|
||||
bool backing_y_0_top,
|
||||
uint32_t backing_width,
|
||||
uint32_t backing_height,
|
||||
uint32_t x, uint32_t y,
|
||||
uint32_t w, uint32_t h,
|
||||
void *d3d_tex2d);
|
||||
void gd_gl_area_scanout_disable(DisplayChangeListener *dcl);
|
||||
void gd_gl_area_scanout_flush(DisplayChangeListener *dcl,
|
||||
uint32_t x, uint32_t y, uint32_t w, uint32_t h);
|
||||
void gtk_gl_area_init(void);
|
||||
int gd_gl_area_make_current(DisplayGLCtx *dgc,
|
||||
QEMUGLContext ctx);
|
||||
|
||||
/* gtk-clipboard.c */
|
||||
void gd_clipboard_init(GtkDisplayState *gd);
|
||||
|
||||
#endif /* UI_GTK_H */
|
Loading…
Add table
Add a link
Reference in a new issue