Changes to make the new testgtk compile after gtk_menu_append was removed.
2000-11-09 Alexander Larsson <alexl@redhat.com> * demos/testgtk/menus.c: Changes to make the new testgtk compile after gtk_menu_append was removed. * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_get_depth, gdk_fb_get_visual, gdk_drawable_impl_fb_class_init): Implement these drawable functions. Now GtkImages work again. * gdk/linux-fb/gdkimage-fb.c (_gdk_fb_get_image): Change prototype. * gdk/linux-fb/gdkprivate-fb.h (_gdk_fb_get_image): Change prototype. * gdk/linux-fb/gdkmain-fb.c (fb_modes_parse_mode, gdk_fb_setup_mode_from_name, gdk_fb_set_mode, gdk_fb_display_new); Parse /etc/fb.modes, use the environment variables GDK_DISPLAY_MODE, GDK_DISPLAY_DEPTH, GDK_DISPLAY_WIDTH, GDK_DISPLAY_HEIGHT.
This commit is contained in:
parent
8ced8f9d84
commit
8898529c12
20
ChangeLog
20
ChangeLog
@ -1,3 +1,23 @@
|
||||
2000-11-09 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* demos/testgtk/menus.c:
|
||||
Changes to make the new testgtk compile after
|
||||
gtk_menu_append was removed.
|
||||
|
||||
* gdk/linux-fb/gdkdrawable-fb2.c
|
||||
(gdk_fb_get_depth, gdk_fb_get_visual,
|
||||
gdk_drawable_impl_fb_class_init): Implement
|
||||
these drawable functions. Now GtkImages work again.
|
||||
|
||||
* gdk/linux-fb/gdkimage-fb.c (_gdk_fb_get_image): Change prototype.
|
||||
|
||||
* gdk/linux-fb/gdkprivate-fb.h (_gdk_fb_get_image): Change prototype.
|
||||
|
||||
* gdk/linux-fb/gdkmain-fb.c (fb_modes_parse_mode,
|
||||
gdk_fb_setup_mode_from_name, gdk_fb_set_mode, gdk_fb_display_new);
|
||||
Parse /etc/fb.modes, use the environment variables GDK_DISPLAY_MODE,
|
||||
GDK_DISPLAY_DEPTH, GDK_DISPLAY_WIDTH, GDK_DISPLAY_HEIGHT.
|
||||
|
||||
2000-11-08 Havoc Pennington <hp@pobox.com>
|
||||
|
||||
* gtk/gtktexttag.c (gtk_text_tag_class_init): Add visible and
|
||||
|
@ -1,3 +1,23 @@
|
||||
2000-11-09 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* demos/testgtk/menus.c:
|
||||
Changes to make the new testgtk compile after
|
||||
gtk_menu_append was removed.
|
||||
|
||||
* gdk/linux-fb/gdkdrawable-fb2.c
|
||||
(gdk_fb_get_depth, gdk_fb_get_visual,
|
||||
gdk_drawable_impl_fb_class_init): Implement
|
||||
these drawable functions. Now GtkImages work again.
|
||||
|
||||
* gdk/linux-fb/gdkimage-fb.c (_gdk_fb_get_image): Change prototype.
|
||||
|
||||
* gdk/linux-fb/gdkprivate-fb.h (_gdk_fb_get_image): Change prototype.
|
||||
|
||||
* gdk/linux-fb/gdkmain-fb.c (fb_modes_parse_mode,
|
||||
gdk_fb_setup_mode_from_name, gdk_fb_set_mode, gdk_fb_display_new);
|
||||
Parse /etc/fb.modes, use the environment variables GDK_DISPLAY_MODE,
|
||||
GDK_DISPLAY_DEPTH, GDK_DISPLAY_WIDTH, GDK_DISPLAY_HEIGHT.
|
||||
|
||||
2000-11-08 Havoc Pennington <hp@pobox.com>
|
||||
|
||||
* gtk/gtktexttag.c (gtk_text_tag_class_init): Add visible and
|
||||
|
@ -1,3 +1,23 @@
|
||||
2000-11-09 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* demos/testgtk/menus.c:
|
||||
Changes to make the new testgtk compile after
|
||||
gtk_menu_append was removed.
|
||||
|
||||
* gdk/linux-fb/gdkdrawable-fb2.c
|
||||
(gdk_fb_get_depth, gdk_fb_get_visual,
|
||||
gdk_drawable_impl_fb_class_init): Implement
|
||||
these drawable functions. Now GtkImages work again.
|
||||
|
||||
* gdk/linux-fb/gdkimage-fb.c (_gdk_fb_get_image): Change prototype.
|
||||
|
||||
* gdk/linux-fb/gdkprivate-fb.h (_gdk_fb_get_image): Change prototype.
|
||||
|
||||
* gdk/linux-fb/gdkmain-fb.c (fb_modes_parse_mode,
|
||||
gdk_fb_setup_mode_from_name, gdk_fb_set_mode, gdk_fb_display_new);
|
||||
Parse /etc/fb.modes, use the environment variables GDK_DISPLAY_MODE,
|
||||
GDK_DISPLAY_DEPTH, GDK_DISPLAY_WIDTH, GDK_DISPLAY_HEIGHT.
|
||||
|
||||
2000-11-08 Havoc Pennington <hp@pobox.com>
|
||||
|
||||
* gtk/gtktexttag.c (gtk_text_tag_class_init): Add visible and
|
||||
|
@ -1,3 +1,23 @@
|
||||
2000-11-09 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* demos/testgtk/menus.c:
|
||||
Changes to make the new testgtk compile after
|
||||
gtk_menu_append was removed.
|
||||
|
||||
* gdk/linux-fb/gdkdrawable-fb2.c
|
||||
(gdk_fb_get_depth, gdk_fb_get_visual,
|
||||
gdk_drawable_impl_fb_class_init): Implement
|
||||
these drawable functions. Now GtkImages work again.
|
||||
|
||||
* gdk/linux-fb/gdkimage-fb.c (_gdk_fb_get_image): Change prototype.
|
||||
|
||||
* gdk/linux-fb/gdkprivate-fb.h (_gdk_fb_get_image): Change prototype.
|
||||
|
||||
* gdk/linux-fb/gdkmain-fb.c (fb_modes_parse_mode,
|
||||
gdk_fb_setup_mode_from_name, gdk_fb_set_mode, gdk_fb_display_new);
|
||||
Parse /etc/fb.modes, use the environment variables GDK_DISPLAY_MODE,
|
||||
GDK_DISPLAY_DEPTH, GDK_DISPLAY_WIDTH, GDK_DISPLAY_HEIGHT.
|
||||
|
||||
2000-11-08 Havoc Pennington <hp@pobox.com>
|
||||
|
||||
* gtk/gtktexttag.c (gtk_text_tag_class_init): Add visible and
|
||||
|
@ -1,3 +1,23 @@
|
||||
2000-11-09 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* demos/testgtk/menus.c:
|
||||
Changes to make the new testgtk compile after
|
||||
gtk_menu_append was removed.
|
||||
|
||||
* gdk/linux-fb/gdkdrawable-fb2.c
|
||||
(gdk_fb_get_depth, gdk_fb_get_visual,
|
||||
gdk_drawable_impl_fb_class_init): Implement
|
||||
these drawable functions. Now GtkImages work again.
|
||||
|
||||
* gdk/linux-fb/gdkimage-fb.c (_gdk_fb_get_image): Change prototype.
|
||||
|
||||
* gdk/linux-fb/gdkprivate-fb.h (_gdk_fb_get_image): Change prototype.
|
||||
|
||||
* gdk/linux-fb/gdkmain-fb.c (fb_modes_parse_mode,
|
||||
gdk_fb_setup_mode_from_name, gdk_fb_set_mode, gdk_fb_display_new);
|
||||
Parse /etc/fb.modes, use the environment variables GDK_DISPLAY_MODE,
|
||||
GDK_DISPLAY_DEPTH, GDK_DISPLAY_WIDTH, GDK_DISPLAY_HEIGHT.
|
||||
|
||||
2000-11-08 Havoc Pennington <hp@pobox.com>
|
||||
|
||||
* gtk/gtktexttag.c (gtk_text_tag_class_init): Add visible and
|
||||
|
@ -1,3 +1,23 @@
|
||||
2000-11-09 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* demos/testgtk/menus.c:
|
||||
Changes to make the new testgtk compile after
|
||||
gtk_menu_append was removed.
|
||||
|
||||
* gdk/linux-fb/gdkdrawable-fb2.c
|
||||
(gdk_fb_get_depth, gdk_fb_get_visual,
|
||||
gdk_drawable_impl_fb_class_init): Implement
|
||||
these drawable functions. Now GtkImages work again.
|
||||
|
||||
* gdk/linux-fb/gdkimage-fb.c (_gdk_fb_get_image): Change prototype.
|
||||
|
||||
* gdk/linux-fb/gdkprivate-fb.h (_gdk_fb_get_image): Change prototype.
|
||||
|
||||
* gdk/linux-fb/gdkmain-fb.c (fb_modes_parse_mode,
|
||||
gdk_fb_setup_mode_from_name, gdk_fb_set_mode, gdk_fb_display_new);
|
||||
Parse /etc/fb.modes, use the environment variables GDK_DISPLAY_MODE,
|
||||
GDK_DISPLAY_DEPTH, GDK_DISPLAY_WIDTH, GDK_DISPLAY_HEIGHT.
|
||||
|
||||
2000-11-08 Havoc Pennington <hp@pobox.com>
|
||||
|
||||
* gtk/gtktexttag.c (gtk_text_tag_class_init): Add visible and
|
||||
|
@ -1,3 +1,23 @@
|
||||
2000-11-09 Alexander Larsson <alexl@redhat.com>
|
||||
|
||||
* demos/testgtk/menus.c:
|
||||
Changes to make the new testgtk compile after
|
||||
gtk_menu_append was removed.
|
||||
|
||||
* gdk/linux-fb/gdkdrawable-fb2.c
|
||||
(gdk_fb_get_depth, gdk_fb_get_visual,
|
||||
gdk_drawable_impl_fb_class_init): Implement
|
||||
these drawable functions. Now GtkImages work again.
|
||||
|
||||
* gdk/linux-fb/gdkimage-fb.c (_gdk_fb_get_image): Change prototype.
|
||||
|
||||
* gdk/linux-fb/gdkprivate-fb.h (_gdk_fb_get_image): Change prototype.
|
||||
|
||||
* gdk/linux-fb/gdkmain-fb.c (fb_modes_parse_mode,
|
||||
gdk_fb_setup_mode_from_name, gdk_fb_set_mode, gdk_fb_display_new);
|
||||
Parse /etc/fb.modes, use the environment variables GDK_DISPLAY_MODE,
|
||||
GDK_DISPLAY_DEPTH, GDK_DISPLAY_WIDTH, GDK_DISPLAY_HEIGHT.
|
||||
|
||||
2000-11-08 Havoc Pennington <hp@pobox.com>
|
||||
|
||||
* gtk/gtktexttag.c (gtk_text_tag_class_init): Add visible and
|
||||
|
@ -30,7 +30,7 @@ create_menu (gint depth, gboolean tearoff)
|
||||
if (tearoff)
|
||||
{
|
||||
menuitem = gtk_tearoff_menu_item_new ();
|
||||
gtk_menu_append (GTK_MENU (menu), menuitem);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
||||
gtk_widget_show (menuitem);
|
||||
}
|
||||
|
||||
@ -41,7 +41,7 @@ create_menu (gint depth, gboolean tearoff)
|
||||
group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menuitem));
|
||||
if (depth % 2)
|
||||
gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menuitem), TRUE);
|
||||
gtk_menu_append (GTK_MENU (menu), menuitem);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
||||
gtk_widget_show (menuitem);
|
||||
if (i == 3)
|
||||
gtk_widget_set_sensitive (menuitem, FALSE);
|
||||
@ -120,7 +120,7 @@ do_menus (void)
|
||||
gtk_menu_set_accel_group (GTK_MENU (menu), accel_group);
|
||||
|
||||
menuitem = gtk_check_menu_item_new_with_label ("Accelerate Me");
|
||||
gtk_menu_append (GTK_MENU (menu), menuitem);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
||||
gtk_widget_show (menuitem);
|
||||
gtk_widget_add_accelerator (menuitem,
|
||||
"activate",
|
||||
@ -129,7 +129,7 @@ do_menus (void)
|
||||
0,
|
||||
GTK_ACCEL_VISIBLE | GTK_ACCEL_SIGNAL_VISIBLE);
|
||||
menuitem = gtk_check_menu_item_new_with_label ("Accelerator Locked");
|
||||
gtk_menu_append (GTK_MENU (menu), menuitem);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
||||
gtk_widget_show (menuitem);
|
||||
gtk_widget_add_accelerator (menuitem,
|
||||
"activate",
|
||||
@ -138,7 +138,7 @@ do_menus (void)
|
||||
0,
|
||||
GTK_ACCEL_VISIBLE | GTK_ACCEL_LOCKED);
|
||||
menuitem = gtk_check_menu_item_new_with_label ("Accelerators Frozen");
|
||||
gtk_menu_append (GTK_MENU (menu), menuitem);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
||||
gtk_widget_show (menuitem);
|
||||
gtk_widget_add_accelerator (menuitem,
|
||||
"activate",
|
||||
|
@ -30,7 +30,7 @@ create_menu (gint depth, gboolean tearoff)
|
||||
if (tearoff)
|
||||
{
|
||||
menuitem = gtk_tearoff_menu_item_new ();
|
||||
gtk_menu_append (GTK_MENU (menu), menuitem);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
||||
gtk_widget_show (menuitem);
|
||||
}
|
||||
|
||||
@ -41,7 +41,7 @@ create_menu (gint depth, gboolean tearoff)
|
||||
group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menuitem));
|
||||
if (depth % 2)
|
||||
gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menuitem), TRUE);
|
||||
gtk_menu_append (GTK_MENU (menu), menuitem);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
||||
gtk_widget_show (menuitem);
|
||||
if (i == 3)
|
||||
gtk_widget_set_sensitive (menuitem, FALSE);
|
||||
@ -120,7 +120,7 @@ do_menus (void)
|
||||
gtk_menu_set_accel_group (GTK_MENU (menu), accel_group);
|
||||
|
||||
menuitem = gtk_check_menu_item_new_with_label ("Accelerate Me");
|
||||
gtk_menu_append (GTK_MENU (menu), menuitem);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
||||
gtk_widget_show (menuitem);
|
||||
gtk_widget_add_accelerator (menuitem,
|
||||
"activate",
|
||||
@ -129,7 +129,7 @@ do_menus (void)
|
||||
0,
|
||||
GTK_ACCEL_VISIBLE | GTK_ACCEL_SIGNAL_VISIBLE);
|
||||
menuitem = gtk_check_menu_item_new_with_label ("Accelerator Locked");
|
||||
gtk_menu_append (GTK_MENU (menu), menuitem);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
||||
gtk_widget_show (menuitem);
|
||||
gtk_widget_add_accelerator (menuitem,
|
||||
"activate",
|
||||
@ -138,7 +138,7 @@ do_menus (void)
|
||||
0,
|
||||
GTK_ACCEL_VISIBLE | GTK_ACCEL_LOCKED);
|
||||
menuitem = gtk_check_menu_item_new_with_label ("Accelerators Frozen");
|
||||
gtk_menu_append (GTK_MENU (menu), menuitem);
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
||||
gtk_widget_show (menuitem);
|
||||
gtk_widget_add_accelerator (menuitem,
|
||||
"activate",
|
||||
|
@ -18,80 +18,82 @@ typedef enum { GPR_USED_BG, GPR_AA_GRAYVAL, GPR_NONE, GPR_ERR_BOUNDS } GetPixelR
|
||||
static GetPixelRet gdk_fb_drawable_get_pixel(GdkDrawable *drawable, GdkGC *gc, int x, int y, GdkColor *spot,
|
||||
gboolean abs_coords, GdkDrawable *bg_relto, GdkDrawable *bgpm);
|
||||
|
||||
void gdk_fb_draw_rectangle (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
gint filled,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height);
|
||||
static void gdk_fb_draw_arc (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
gint filled,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height,
|
||||
gint angle1,
|
||||
gint angle2);
|
||||
static void gdk_fb_draw_polygon (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
gint filled,
|
||||
GdkPoint *points,
|
||||
gint npoints);
|
||||
static void gdk_fb_draw_text (GdkDrawable *drawable,
|
||||
GdkFont *font,
|
||||
GdkGC *gc,
|
||||
gint x,
|
||||
gint y,
|
||||
const gchar *text,
|
||||
gint text_length);
|
||||
static void gdk_fb_draw_text_wc (GdkDrawable *drawable,
|
||||
GdkFont *font,
|
||||
GdkGC *gc,
|
||||
gint x,
|
||||
gint y,
|
||||
const GdkWChar *text,
|
||||
gint text_length);
|
||||
static void gdk_fb_draw_glyphs(GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
PangoFont *font,
|
||||
gint x,
|
||||
gint y,
|
||||
PangoGlyphString *glyphs);
|
||||
void gdk_fb_draw_drawable (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
GdkPixmap *src,
|
||||
gint xsrc,
|
||||
gint ysrc,
|
||||
gint xdest,
|
||||
gint ydest,
|
||||
gint width,
|
||||
gint height);
|
||||
static void gdk_fb_draw_image(GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
GdkImage *image,
|
||||
gint xsrc,
|
||||
gint ysrc,
|
||||
gint xdest,
|
||||
gint ydest,
|
||||
gint width,
|
||||
gint height);
|
||||
static void gdk_fb_draw_points (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
GdkPoint *points,
|
||||
gint npoints);
|
||||
static void gdk_fb_draw_segments (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
GdkSegment *segs,
|
||||
gint nsegs);
|
||||
static void gdk_fb_draw_lines (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
GdkPoint *points,
|
||||
gint npoints);
|
||||
static GdkColormap* gdk_fb_get_colormap (GdkDrawable *drawable);
|
||||
static void gdk_fb_set_colormap (GdkDrawable *drawable,
|
||||
GdkColormap *colormap);
|
||||
void gdk_fb_draw_rectangle (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
gint filled,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height);
|
||||
static void gdk_fb_draw_arc (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
gint filled,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height,
|
||||
gint angle1,
|
||||
gint angle2);
|
||||
static void gdk_fb_draw_polygon (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
gint filled,
|
||||
GdkPoint *points,
|
||||
gint npoints);
|
||||
static void gdk_fb_draw_text (GdkDrawable *drawable,
|
||||
GdkFont *font,
|
||||
GdkGC *gc,
|
||||
gint x,
|
||||
gint y,
|
||||
const gchar *text,
|
||||
gint text_length);
|
||||
static void gdk_fb_draw_text_wc (GdkDrawable *drawable,
|
||||
GdkFont *font,
|
||||
GdkGC *gc,
|
||||
gint x,
|
||||
gint y,
|
||||
const GdkWChar *text,
|
||||
gint text_length);
|
||||
static void gdk_fb_draw_glyphs (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
PangoFont *font,
|
||||
gint x,
|
||||
gint y,
|
||||
PangoGlyphString *glyphs);
|
||||
void gdk_fb_draw_drawable (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
GdkPixmap *src,
|
||||
gint xsrc,
|
||||
gint ysrc,
|
||||
gint xdest,
|
||||
gint ydest,
|
||||
gint width,
|
||||
gint height);
|
||||
static void gdk_fb_draw_image (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
GdkImage *image,
|
||||
gint xsrc,
|
||||
gint ysrc,
|
||||
gint xdest,
|
||||
gint ydest,
|
||||
gint width,
|
||||
gint height);
|
||||
static void gdk_fb_draw_points (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
GdkPoint *points,
|
||||
gint npoints);
|
||||
static void gdk_fb_draw_segments (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
GdkSegment *segs,
|
||||
gint nsegs);
|
||||
static void gdk_fb_draw_lines (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
GdkPoint *points,
|
||||
gint npoints);
|
||||
static GdkColormap* gdk_fb_get_colormap (GdkDrawable *drawable);
|
||||
static void gdk_fb_set_colormap (GdkDrawable *drawable,
|
||||
GdkColormap *colormap);
|
||||
static gint gdk_fb_get_depth (GdkDrawable *drawable);
|
||||
static GdkVisual* gdk_fb_get_visual (GdkDrawable *drawable);
|
||||
|
||||
static gpointer parent_class = NULL;
|
||||
|
||||
@ -126,7 +128,11 @@ gdk_drawable_impl_fb_class_init (GdkDrawableFBClass *klass)
|
||||
|
||||
drawable_class->set_colormap = gdk_fb_set_colormap;
|
||||
drawable_class->get_colormap = gdk_fb_get_colormap;
|
||||
|
||||
drawable_class->get_size = gdk_fb_get_size;
|
||||
|
||||
drawable_class->get_depth = gdk_fb_get_depth;
|
||||
drawable_class->get_visual = gdk_fb_get_visual;
|
||||
|
||||
drawable_class->get_image = _gdk_fb_get_image;
|
||||
}
|
||||
@ -1376,3 +1382,15 @@ gdk_fb_draw_image(GdkDrawable *drawable,
|
||||
|
||||
gdk_fb_draw_drawable_2(drawable, gc, (GdkPixmap *)&fbd, xsrc, ysrc, xdest, ydest, width, height, TRUE, TRUE);
|
||||
}
|
||||
|
||||
static gint
|
||||
gdk_fb_get_depth (GdkDrawable *drawable)
|
||||
{
|
||||
return GDK_DRAWABLE_IMPL_FBDATA (drawable)->depth;
|
||||
}
|
||||
|
||||
static GdkVisual*
|
||||
gdk_fb_get_visual (GdkDrawable *drawable)
|
||||
{
|
||||
return gdk_visual_get_system();
|
||||
}
|
||||
|
@ -151,7 +151,7 @@ gdk_image_new (GdkImageType type,
|
||||
}
|
||||
|
||||
GdkImage*
|
||||
_gdk_fb_get_image (GdkWindow *window,
|
||||
_gdk_fb_get_image (GdkDrawable *drawable,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
@ -162,12 +162,12 @@ _gdk_fb_get_image (GdkWindow *window,
|
||||
gint bits_per_pixel = GDK_DRAWABLE_IMPL_FBDATA(gdk_parent_root)->depth;
|
||||
GdkPixmapFBData fbd;
|
||||
|
||||
g_return_val_if_fail (window != NULL, NULL);
|
||||
g_return_val_if_fail (drawable != NULL, NULL);
|
||||
|
||||
image = (GdkImage *)private = (GdkImagePrivateFB *)g_object_new (gdk_image_get_type(), NULL);
|
||||
|
||||
image->type = GDK_IMAGE_NORMAL;
|
||||
image->visual = gdk_window_get_visual (window);
|
||||
image->visual = gdk_drawable_get_visual (drawable);
|
||||
image->width = width;
|
||||
image->height = height;
|
||||
image->depth = bits_per_pixel;
|
||||
@ -193,7 +193,7 @@ _gdk_fb_get_image (GdkWindow *window,
|
||||
fbd.drawable_data.depth = image->depth;
|
||||
fbd.drawable_data.window_type = GDK_DRAWABLE_PIXMAP;
|
||||
|
||||
gdk_fb_draw_drawable_2((GdkPixmap *)&fbd, NULL, window, x, y, 0, 0, width, height, TRUE, TRUE);
|
||||
gdk_fb_draw_drawable_2((GdkPixmap *)&fbd, NULL, drawable, x, y, 0, 0, width, height, TRUE, TRUE);
|
||||
|
||||
return image;
|
||||
}
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "gdk.h"
|
||||
|
||||
@ -60,6 +61,412 @@ GdkArgDesc _gdk_windowing_args[] = {
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
static const GScannerConfig fb_modes_scanner_config =
|
||||
{
|
||||
(
|
||||
" \t\n"
|
||||
) /* cset_skip_characters */,
|
||||
(
|
||||
G_CSET_a_2_z
|
||||
G_CSET_A_2_Z
|
||||
) /* cset_identifier_first */,
|
||||
(
|
||||
G_CSET_a_2_z
|
||||
"_-0123456789"
|
||||
G_CSET_A_2_Z
|
||||
) /* cset_identifier_nth */,
|
||||
( "#\n" ) /* cpair_comment_single */,
|
||||
|
||||
FALSE /* case_sensitive */,
|
||||
|
||||
FALSE /* skip_comment_multi */,
|
||||
TRUE /* skip_comment_single */,
|
||||
FALSE /* scan_comment_multi */,
|
||||
TRUE /* scan_identifier */,
|
||||
TRUE /* scan_identifier_1char */,
|
||||
FALSE /* scan_identifier_NULL */,
|
||||
TRUE /* scan_symbols */,
|
||||
FALSE /* scan_binary */,
|
||||
FALSE /* scan_octal */,
|
||||
FALSE /* scan_float */,
|
||||
FALSE /* scan_hex */,
|
||||
FALSE /* scan_hex_dollar */,
|
||||
FALSE /* scan_string_sq */,
|
||||
TRUE /* scan_string_dq */,
|
||||
TRUE /* numbers_2_int */,
|
||||
FALSE /* int_2_float */,
|
||||
FALSE /* identifier_2_string */,
|
||||
TRUE /* char_2_token */,
|
||||
FALSE /* symbol_2_token */,
|
||||
FALSE /* scope_0_fallback */,
|
||||
};
|
||||
|
||||
enum {
|
||||
FB_MODE,
|
||||
FB_ENDMODE,
|
||||
FB_GEOMETRY,
|
||||
FB_TIMINGS,
|
||||
FB_LACED,
|
||||
FB_HSYNC,
|
||||
FB_VSYNC,
|
||||
FB_CSYNC,
|
||||
FB_EXTSYNC,
|
||||
FB_DOUBLE
|
||||
};
|
||||
|
||||
char *fb_modes_keywords[] =
|
||||
{
|
||||
"mode",
|
||||
"endmode",
|
||||
"geometry",
|
||||
"timings",
|
||||
"laced",
|
||||
"hsync",
|
||||
"vsync",
|
||||
"csync",
|
||||
"extsync",
|
||||
"double"
|
||||
};
|
||||
|
||||
static int
|
||||
fb_modes_parse_mode (GScanner *scanner,
|
||||
struct fb_var_screeninfo *modeinfo,
|
||||
char *specified_modename)
|
||||
{
|
||||
guint token;
|
||||
int keyword;
|
||||
int i;
|
||||
char *modename;
|
||||
int geometry[5];
|
||||
int timings[7];
|
||||
int vsync=0, hsync=0, csync=0, extsync=0, doublescan=0, laced=0;
|
||||
int found_geometry = 0;
|
||||
int found_timings = 0;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_SYMBOL)
|
||||
return -1;
|
||||
|
||||
keyword = GPOINTER_TO_INT(scanner->value.v_symbol);
|
||||
if (keyword != FB_MODE)
|
||||
return -1;
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_STRING)
|
||||
return -1;
|
||||
|
||||
modename = g_strdup(scanner->value.v_string);
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_SYMBOL)
|
||||
{
|
||||
g_free (modename);
|
||||
return -1; /* Not a valid keyword */
|
||||
}
|
||||
keyword = GPOINTER_TO_INT(scanner->value.v_symbol);
|
||||
while ( keyword != FB_ENDMODE )
|
||||
{
|
||||
|
||||
switch (GPOINTER_TO_INT(scanner->value.v_symbol))
|
||||
{
|
||||
case FB_GEOMETRY:
|
||||
for (i=0;i<5;i++) {
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_INT)
|
||||
{
|
||||
g_free (modename);
|
||||
return -1; /* need a integer */
|
||||
}
|
||||
geometry[i] = scanner->value.v_int;
|
||||
}
|
||||
found_geometry = TRUE;
|
||||
break;
|
||||
case FB_TIMINGS:
|
||||
for (i=0;i<7;i++) {
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_INT)
|
||||
{
|
||||
g_free (modename);
|
||||
return -1; /* need a integer */
|
||||
}
|
||||
timings[i] = scanner->value.v_int;
|
||||
}
|
||||
found_timings = TRUE;
|
||||
break;
|
||||
case FB_LACED:
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_IDENTIFIER)
|
||||
{
|
||||
g_free (modename);
|
||||
return -1;
|
||||
}
|
||||
if (g_strcasecmp(scanner->value.v_identifier, "true")==0)
|
||||
laced = 1;
|
||||
else if (g_strcasecmp(scanner->value.v_identifier, "false")==0)
|
||||
laced = 0;
|
||||
else
|
||||
{
|
||||
g_free (modename);
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
case FB_EXTSYNC:
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_IDENTIFIER)
|
||||
{
|
||||
g_free (modename);
|
||||
return -1;
|
||||
}
|
||||
if (g_strcasecmp(scanner->value.v_identifier, "true")==0)
|
||||
extsync = 1;
|
||||
else if (g_strcasecmp(scanner->value.v_identifier, "false")==0)
|
||||
extsync = 0;
|
||||
else
|
||||
{
|
||||
g_free (modename);
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
case FB_DOUBLE:
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_IDENTIFIER)
|
||||
{
|
||||
g_free (modename);
|
||||
return -1;
|
||||
}
|
||||
if (g_strcasecmp(scanner->value.v_identifier, "true")==0)
|
||||
doublescan = 1;
|
||||
else if (g_strcasecmp(scanner->value.v_identifier, "false")==0)
|
||||
doublescan = 0;
|
||||
else
|
||||
{
|
||||
g_free (modename);
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
case FB_VSYNC:
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_IDENTIFIER)
|
||||
{
|
||||
g_free (modename);
|
||||
return -1;
|
||||
}
|
||||
if (g_strcasecmp(scanner->value.v_identifier, "high")==0)
|
||||
vsync = 1;
|
||||
else if (g_strcasecmp(scanner->value.v_identifier, "low")==0)
|
||||
vsync = 0;
|
||||
else
|
||||
{
|
||||
g_free (modename);
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
case FB_HSYNC:
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_IDENTIFIER)
|
||||
{
|
||||
g_free (modename);
|
||||
return -1;
|
||||
}
|
||||
if (g_strcasecmp(scanner->value.v_identifier, "high")==0)
|
||||
hsync = 1;
|
||||
else if (g_strcasecmp(scanner->value.v_identifier, "low")==0)
|
||||
hsync = 0;
|
||||
else
|
||||
{
|
||||
g_free (modename);
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
case FB_CSYNC:
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_IDENTIFIER)
|
||||
{
|
||||
g_free (modename);
|
||||
return -1;
|
||||
}
|
||||
if (g_strcasecmp(scanner->value.v_identifier, "high")==0)
|
||||
csync = 1;
|
||||
else if (g_strcasecmp(scanner->value.v_identifier, "low")==0)
|
||||
csync = 0;
|
||||
else
|
||||
{
|
||||
g_free (modename);
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
token = g_scanner_get_next_token(scanner);
|
||||
if (token != G_TOKEN_SYMBOL)
|
||||
{
|
||||
g_free (modename);
|
||||
return -1; /* Not a valid keyword */
|
||||
}
|
||||
keyword = GPOINTER_TO_INT(scanner->value.v_symbol);
|
||||
}
|
||||
|
||||
if (strcmp(modename, specified_modename)== 0) {
|
||||
if (!found_geometry)
|
||||
g_warning("Geometry not specified\n");
|
||||
|
||||
if (found_geometry)
|
||||
{
|
||||
modeinfo->xres = geometry[0];
|
||||
modeinfo->yres = geometry[1];
|
||||
modeinfo->xres_virtual = geometry[2];
|
||||
modeinfo->yres_virtual = geometry[3];
|
||||
modeinfo->bits_per_pixel = geometry[4];
|
||||
}
|
||||
|
||||
if (!found_timings)
|
||||
g_warning("Timing not specified\n");
|
||||
|
||||
if (found_timings)
|
||||
{
|
||||
modeinfo->pixclock = timings[0];
|
||||
modeinfo->left_margin = timings[1];
|
||||
modeinfo->right_margin = timings[2];
|
||||
modeinfo->upper_margin = timings[3];
|
||||
modeinfo->lower_margin = timings[4];
|
||||
modeinfo->hsync_len = timings[5];
|
||||
modeinfo->vsync_len = timings[6];
|
||||
|
||||
modeinfo->vmode = 0;
|
||||
if (laced)
|
||||
modeinfo->vmode |= FB_VMODE_INTERLACED;
|
||||
if (doublescan)
|
||||
modeinfo->vmode |= FB_VMODE_DOUBLE;
|
||||
|
||||
modeinfo->sync = 0;
|
||||
if (hsync)
|
||||
modeinfo->sync |= FB_SYNC_HOR_HIGH_ACT;
|
||||
if (vsync)
|
||||
modeinfo->sync |= FB_SYNC_VERT_HIGH_ACT;
|
||||
}
|
||||
|
||||
g_free(modename);
|
||||
return 1;
|
||||
}
|
||||
|
||||
g_free(modename);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
gdk_fb_setup_mode_from_name(struct fb_var_screeninfo *modeinfo, char *modename)
|
||||
{
|
||||
GScanner *scanner;
|
||||
char *filename;
|
||||
gint result;
|
||||
int fd, i;
|
||||
int retval;
|
||||
|
||||
retval = 0;
|
||||
|
||||
filename = "/etc/fb.modes";
|
||||
|
||||
fd = open (filename, O_RDONLY);
|
||||
if (fd < 0)
|
||||
{
|
||||
g_warning ("Cannot read %s\n", filename);
|
||||
return retval;
|
||||
}
|
||||
|
||||
scanner = g_scanner_new ((GScannerConfig *) &fb_modes_scanner_config);
|
||||
scanner->input_name = filename;
|
||||
|
||||
for (i=0;i<sizeof(fb_modes_keywords)/sizeof(fb_modes_keywords[0]);i++)
|
||||
g_scanner_add_symbol(scanner, fb_modes_keywords[i], GINT_TO_POINTER(i));
|
||||
|
||||
g_scanner_input_file (scanner, fd);
|
||||
|
||||
while (1) {
|
||||
if (g_scanner_peek_next_token(scanner) == G_TOKEN_EOF) {
|
||||
break;
|
||||
}
|
||||
result = fb_modes_parse_mode(scanner, modeinfo, modename);
|
||||
|
||||
if (result < 0) {
|
||||
g_warning("parse error in %s at line %d\n", filename, scanner->line);
|
||||
break;
|
||||
}
|
||||
if (result > 0)
|
||||
{
|
||||
retval = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
g_scanner_destroy (scanner);
|
||||
|
||||
close(fd);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
gdk_fb_set_mode(GdkFBDisplay *display)
|
||||
{
|
||||
char *env, *end;
|
||||
int depth, height, width;
|
||||
|
||||
if (ioctl (display->fd, FBIOGET_VSCREENINFO, &display->modeinfo) < 0)
|
||||
return -1;
|
||||
|
||||
env = getenv("GDK_DISPLAY_MODE");
|
||||
if (env)
|
||||
{
|
||||
if (!gdk_fb_setup_mode_from_name(&display->modeinfo, env))
|
||||
g_warning("Couldn't find mode named '%s'\n", env);
|
||||
}
|
||||
|
||||
env = getenv("GDK_DISPLAY_DEPTH");
|
||||
if (env)
|
||||
{
|
||||
depth = strtol(env, &end, 10);
|
||||
if (env != end)
|
||||
display->modeinfo.bits_per_pixel = depth;
|
||||
}
|
||||
|
||||
env = getenv("GDK_DISPLAY_WIDTH");
|
||||
if (env)
|
||||
{
|
||||
width = strtol(env, &end, 10);
|
||||
if (env != end)
|
||||
{
|
||||
display->modeinfo.xres = width;
|
||||
display->modeinfo.xres_virtual = width;
|
||||
}
|
||||
}
|
||||
|
||||
env = getenv("GDK_DISPLAY_HEIGHT");
|
||||
if (env)
|
||||
{
|
||||
height = strtol(env, &end, 10);
|
||||
if (env != end)
|
||||
{
|
||||
display->modeinfo.yres = height;
|
||||
display->modeinfo.yres_virtual = height;
|
||||
}
|
||||
}
|
||||
|
||||
if (ioctl (display->fd, FBIOPUT_VSCREENINFO, &display->modeinfo) < 0)
|
||||
{
|
||||
g_warning("Couldn't set specified mode\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (ioctl (display->fd, FBIOGET_FSCREENINFO, &display->sinfo) < 0)
|
||||
{
|
||||
g_warning("Error getting fixed screen info\n");
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static GdkFBDisplay *
|
||||
gdk_fb_display_new(const char *filename)
|
||||
{
|
||||
@ -72,16 +479,21 @@ gdk_fb_display_new(const char *filename)
|
||||
|
||||
retval = g_new0(GdkFBDisplay, 1);
|
||||
retval->fd = fd;
|
||||
|
||||
if (gdk_fb_set_mode(retval) < 0)
|
||||
{
|
||||
g_free (retval);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ioctl(retval->fd, FBIOBLANK, 0);
|
||||
n = ioctl(fd, FBIOGET_FSCREENINFO, &retval->sinfo);
|
||||
n |= ioctl(fd, FBIOGET_VSCREENINFO, &retval->modeinfo);
|
||||
g_assert(!n);
|
||||
|
||||
/* We used to use sinfo.smem_len, but that seemed to be broken in many cases */
|
||||
retval->fbmem = mmap(NULL, retval->modeinfo.yres * retval->sinfo.line_length,
|
||||
PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
g_assert(retval->fbmem != MAP_FAILED);
|
||||
|
||||
|
||||
if(retval->sinfo.visual == FB_VISUAL_PSEUDOCOLOR)
|
||||
{
|
||||
guint16 red[256], green[256], blue[256];
|
||||
|
@ -72,7 +72,8 @@ struct _GdkDrawableFBData
|
||||
|
||||
guint rowstride;
|
||||
|
||||
/* Due to excursions in gdk, this stuff has to be stored here instead of in GdkDrawable where it belongs */
|
||||
/* Due to excursions in gdk, this stuff has to be stored here
|
||||
instead of in GdkDrawable where it belongs */
|
||||
gint width, height, depth;
|
||||
GdkColormap *colormap;
|
||||
GdkWindowType window_type;
|
||||
@ -202,11 +203,11 @@ void gdk_window_invalidate_region_clear(GdkWindow *window, GdkRegion *region);
|
||||
void gdk_window_invalidate_rect_clear(GdkWindow *window, GdkRectangle *rect);
|
||||
GdkGC *_gdk_fb_gc_new(GdkDrawable *drawable, GdkGCValues *values, GdkGCValuesMask values_mask);
|
||||
|
||||
GdkImage*_gdk_fb_get_image (GdkWindow *window,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height);
|
||||
GdkImage*_gdk_fb_get_image (GdkDrawable *drawable,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height);
|
||||
|
||||
void gdk_fb_drawable_clear (GdkDrawable *drawable);
|
||||
void gdk_fb_draw_drawable (GdkDrawable *drawable,
|
||||
|
Loading…
Reference in New Issue
Block a user