diff --git a/ChangeLog b/ChangeLog index 52425ebaad..85226bd8a0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Sun Sep 22 18:22:37 2002 Owen Taylor + + * gdk/linux-fb/{gdkinput.c,gdkkeyboard-fb.c,gdk/linux-fb/gdkmain-fb.c, + gdk/linux-fb/gdkprivate-fb.h, gdk/linux-fb/gdkwindow-fb.c}: + Patch from Eric Warmenhoven to with miscellaneous linux-fb + fixes, including a fix for a crash in + gdk_keymap_get_entries_for_keycode (#87420) + 2002-09-22 Matthias Clasen * gdk/gdkdraw.c (gdk_drawable_get_type): @@ -204,7 +212,7 @@ Tue Sep 10 09:47:52 2002 HideToshi Tajima Tue Sep 10 11:11:09 2002 Owen Taylor - * gdk/linux-fb/*: Patch from Eric Warmonhoven to + * gdk/linux-fb/*: Patch from Eric Warmenhoven to get linux-fb compiling with multihead changes. Tue Sep 10 09:29:00 2002 Owen Taylor diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 52425ebaad..85226bd8a0 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,11 @@ +Sun Sep 22 18:22:37 2002 Owen Taylor + + * gdk/linux-fb/{gdkinput.c,gdkkeyboard-fb.c,gdk/linux-fb/gdkmain-fb.c, + gdk/linux-fb/gdkprivate-fb.h, gdk/linux-fb/gdkwindow-fb.c}: + Patch from Eric Warmenhoven to with miscellaneous linux-fb + fixes, including a fix for a crash in + gdk_keymap_get_entries_for_keycode (#87420) + 2002-09-22 Matthias Clasen * gdk/gdkdraw.c (gdk_drawable_get_type): @@ -204,7 +212,7 @@ Tue Sep 10 09:47:52 2002 HideToshi Tajima Tue Sep 10 11:11:09 2002 Owen Taylor - * gdk/linux-fb/*: Patch from Eric Warmonhoven to + * gdk/linux-fb/*: Patch from Eric Warmenhoven to get linux-fb compiling with multihead changes. Tue Sep 10 09:29:00 2002 Owen Taylor diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 52425ebaad..85226bd8a0 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,11 @@ +Sun Sep 22 18:22:37 2002 Owen Taylor + + * gdk/linux-fb/{gdkinput.c,gdkkeyboard-fb.c,gdk/linux-fb/gdkmain-fb.c, + gdk/linux-fb/gdkprivate-fb.h, gdk/linux-fb/gdkwindow-fb.c}: + Patch from Eric Warmenhoven to with miscellaneous linux-fb + fixes, including a fix for a crash in + gdk_keymap_get_entries_for_keycode (#87420) + 2002-09-22 Matthias Clasen * gdk/gdkdraw.c (gdk_drawable_get_type): @@ -204,7 +212,7 @@ Tue Sep 10 09:47:52 2002 HideToshi Tajima Tue Sep 10 11:11:09 2002 Owen Taylor - * gdk/linux-fb/*: Patch from Eric Warmonhoven to + * gdk/linux-fb/*: Patch from Eric Warmenhoven to get linux-fb compiling with multihead changes. Tue Sep 10 09:29:00 2002 Owen Taylor diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 52425ebaad..85226bd8a0 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,11 @@ +Sun Sep 22 18:22:37 2002 Owen Taylor + + * gdk/linux-fb/{gdkinput.c,gdkkeyboard-fb.c,gdk/linux-fb/gdkmain-fb.c, + gdk/linux-fb/gdkprivate-fb.h, gdk/linux-fb/gdkwindow-fb.c}: + Patch from Eric Warmenhoven to with miscellaneous linux-fb + fixes, including a fix for a crash in + gdk_keymap_get_entries_for_keycode (#87420) + 2002-09-22 Matthias Clasen * gdk/gdkdraw.c (gdk_drawable_get_type): @@ -204,7 +212,7 @@ Tue Sep 10 09:47:52 2002 HideToshi Tajima Tue Sep 10 11:11:09 2002 Owen Taylor - * gdk/linux-fb/*: Patch from Eric Warmonhoven to + * gdk/linux-fb/*: Patch from Eric Warmenhoven to get linux-fb compiling with multihead changes. Tue Sep 10 09:29:00 2002 Owen Taylor diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 52425ebaad..85226bd8a0 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,11 @@ +Sun Sep 22 18:22:37 2002 Owen Taylor + + * gdk/linux-fb/{gdkinput.c,gdkkeyboard-fb.c,gdk/linux-fb/gdkmain-fb.c, + gdk/linux-fb/gdkprivate-fb.h, gdk/linux-fb/gdkwindow-fb.c}: + Patch from Eric Warmenhoven to with miscellaneous linux-fb + fixes, including a fix for a crash in + gdk_keymap_get_entries_for_keycode (#87420) + 2002-09-22 Matthias Clasen * gdk/gdkdraw.c (gdk_drawable_get_type): @@ -204,7 +212,7 @@ Tue Sep 10 09:47:52 2002 HideToshi Tajima Tue Sep 10 11:11:09 2002 Owen Taylor - * gdk/linux-fb/*: Patch from Eric Warmonhoven to + * gdk/linux-fb/*: Patch from Eric Warmenhoven to get linux-fb compiling with multihead changes. Tue Sep 10 09:29:00 2002 Owen Taylor diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 52425ebaad..85226bd8a0 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,11 @@ +Sun Sep 22 18:22:37 2002 Owen Taylor + + * gdk/linux-fb/{gdkinput.c,gdkkeyboard-fb.c,gdk/linux-fb/gdkmain-fb.c, + gdk/linux-fb/gdkprivate-fb.h, gdk/linux-fb/gdkwindow-fb.c}: + Patch from Eric Warmenhoven to with miscellaneous linux-fb + fixes, including a fix for a crash in + gdk_keymap_get_entries_for_keycode (#87420) + 2002-09-22 Matthias Clasen * gdk/gdkdraw.c (gdk_drawable_get_type): @@ -204,7 +212,7 @@ Tue Sep 10 09:47:52 2002 HideToshi Tajima Tue Sep 10 11:11:09 2002 Owen Taylor - * gdk/linux-fb/*: Patch from Eric Warmonhoven to + * gdk/linux-fb/*: Patch from Eric Warmenhoven to get linux-fb compiling with multihead changes. Tue Sep 10 09:29:00 2002 Owen Taylor diff --git a/gdk/.cvsignore b/gdk/.cvsignore index baa11da02c..d2ec135651 100644 --- a/gdk/.cvsignore +++ b/gdk/.cvsignore @@ -8,6 +8,7 @@ _libs libgdk-*.la gdkcursors.h gdkenumtypes.[ch] +gdkmarshalers.h libgdk.la gdkconfig.h stamp-gc-h diff --git a/gdk/linux-fb/gdkinput.c b/gdk/linux-fb/gdkinput.c index 0596274141..e20a5e726b 100644 --- a/gdk/linux-fb/gdkinput.c +++ b/gdk/linux-fb/gdkinput.c @@ -60,6 +60,8 @@ _gdk_init_input_core (void) _gdk_core_pointer->axes = gdk_input_core_axes; _gdk_core_pointer->num_keys = 0; _gdk_core_pointer->keys = NULL; + + _gdk_display->core_pointer = _gdk_core_pointer; } static void @@ -323,6 +325,7 @@ _gdk_input_window_destroy (GdkWindow *window) void _gdk_input_init (void) { + _gdk_init_input_core (); _gdk_input_devices = g_list_append (NULL, _gdk_core_pointer); _gdk_input_ignore_core = FALSE; } diff --git a/gdk/linux-fb/gdkkeyboard-fb.c b/gdk/linux-fb/gdkkeyboard-fb.c index 79c4d7cb55..39d0f07090 100644 --- a/gdk/linux-fb/gdkkeyboard-fb.c +++ b/gdk/linux-fb/gdkkeyboard-fb.c @@ -935,7 +935,7 @@ static void xlate_close (GdkFBKeyboard *kb) { struct termios ts; - const char cursoron_str[] = "\033c"; + const char cursoron_str[] = "\033c\033[3g\033]R"; write_string (gdk_display->tty_fd, cursoron_str); @@ -953,8 +953,11 @@ static guint xlate_lookup (GdkFBKeyboard *kb, const GdkKeymapKey *key) { - g_warning ("xlate_lookup() NIY"); - return FALSE; + if (key->group != 0) + return 0; + if (key->level != 0) + return 0; + return key->keycode; } static gboolean @@ -967,8 +970,15 @@ xlate_translate (GdkFBKeyboard *kb, gint *level, GdkModifierType *consumed_modifiers) { - g_warning ("xlate_translate() NIY"); - return FALSE; + if (keyval) + *keyval = hardware_keycode; + if (effective_group) + *effective_group = 0; + if (level) + *level = 0; + if (consumed_modifiers) + *consumed_modifiers = 0; + return TRUE; } static gboolean @@ -977,10 +987,12 @@ xlate_get_for_keyval (GdkFBKeyboard *kb, GdkKeymapKey **keys, gint *n_keys) { - g_warning ("xlate_get_for_keyval() NIY"); - if (keys) *keys=NULL; - if (n_keys) *n_keys=0; - return FALSE; + *n_keys = 1; + *keys = g_new (GdkKeymapKey, 1); + (*keys)->keycode = keyval; + (*keys)->group = 0; + (*keys)->level = 0; + return TRUE; } static gboolean @@ -990,10 +1002,22 @@ xlate_get_for_keycode (GdkFBKeyboard *kb, guint **keyvals, gint *n_entries) { - g_warning ("xlate_get_for_keycode() NIY"); - if (keys) *keys=NULL; - if (n_entries) *n_entries=0; - return FALSE; + if (keys) + { + *keys = g_new (GdkKeymapKey, 1); + (*keys)->keycode = hardware_keycode; + (*keys)->level = 0; + (*keys)->group = 0; + } + if (keyvals) + { + *keyvals = g_new (guint, 1); + **keyvals = hardware_keycode; + } + if (n_entries) + *n_entries = 1; + + return TRUE; } /* Raw keyboard support */ diff --git a/gdk/linux-fb/gdkmain-fb.c b/gdk/linux-fb/gdkmain-fb.c index a731256777..2e3c5cbbcb 100644 --- a/gdk/linux-fb/gdkmain-fb.c +++ b/gdk/linux-fb/gdkmain-fb.c @@ -118,7 +118,8 @@ enum { FB_VSYNC, FB_CSYNC, FB_EXTSYNC, - FB_DOUBLE + FB_DOUBLE, + FB_ACCEL }; char *fb_modes_keywords[] = @@ -132,7 +133,8 @@ char *fb_modes_keywords[] = "vsync", "csync", "extsync", - "double" + "double", + "accel" }; static int @@ -146,7 +148,7 @@ fb_modes_parse_mode (GScanner *scanner, char *modename; int geometry[5]; int timings[7]; - int vsync=0, hsync=0, csync=0, extsync=0, doublescan=0, laced=0; + int vsync=0, hsync=0, csync=0, extsync=0, doublescan=0, laced=0, accel=1; int found_geometry = 0; int found_timings = 0; @@ -302,6 +304,23 @@ fb_modes_parse_mode (GScanner *scanner, return -1; } break; + case FB_ACCEL: + token = g_scanner_get_next_token (scanner); + if (token != G_TOKEN_IDENTIFIER) + { + g_free (modename); + return -1; + } + if (g_strcasecmp (scanner->value.v_identifier, "false")==0) + accel = 0; + else if (g_strcasecmp (scanner->value.v_identifier, "true")==0) + accel = 1; + else + { + g_free (modename); + return -1; + } + break; } token = g_scanner_get_next_token (scanner); @@ -350,6 +369,10 @@ fb_modes_parse_mode (GScanner *scanner, modeinfo->sync |= FB_SYNC_HOR_HIGH_ACT; if (vsync) modeinfo->sync |= FB_SYNC_VERT_HIGH_ACT; + if (accel) + modeinfo->accel_flags = FB_ACCELF_TEXT; + else + modeinfo->accel_flags = 0; } g_free (modename); @@ -834,6 +857,12 @@ _gdk_windowing_init (int *argc, char ***argv) return; } + /* Although atexit is evil, we need it here because otherwise the + * keyboard is left in a bad state. you can still run 'reset' but + * that gets annoying after running testgtk for the 20th time. + */ + g_atexit(_gdk_windowing_exit); + gdk_initialized = TRUE; _gdk_selection_property = gdk_atom_intern ("GDK_SELECTION", FALSE); diff --git a/gdk/linux-fb/gdkprivate-fb.h b/gdk/linux-fb/gdkprivate-fb.h index 9f8bd0baee..5ed79bacc2 100644 --- a/gdk/linux-fb/gdkprivate-fb.h +++ b/gdk/linux-fb/gdkprivate-fb.h @@ -458,4 +458,12 @@ void gdk_fb_mouse_get_info (gint *x, gint *y, GdkModifierType *mask); +/* Initialization */ +void _gdk_windowing_window_init (void); +void _gdk_visual_init (void); +void _gdk_dnd_init (void); +void _gdk_windowing_image_init (void); +void _gdk_events_init (void); +void _gdk_input_init (void); + #endif /* __GDK_PRIVATE_FB_H__ */ diff --git a/gdk/linux-fb/gdkwindow-fb.c b/gdk/linux-fb/gdkwindow-fb.c index 3fc4bdb9ef..8e08c56bb3 100644 --- a/gdk/linux-fb/gdkwindow-fb.c +++ b/gdk/linux-fb/gdkwindow-fb.c @@ -1958,7 +1958,9 @@ gdk_window_shape_combine_mask (GdkWindow *window, _gdk_window_shape_combine_region (window, (mask == GDK_FB_USE_CHILD_SHAPE)? GDK_FB_USE_CHILD_SHAPE : - gdk_fb_region_create_from_bitmap (mask), + mask ? + gdk_fb_region_create_from_bitmap (mask) : + NULL, x, y); }