aboutsummaryrefslogtreecommitdiffstats
path: root/src/widget.c
diff options
context:
space:
mode:
authorDmitry Antipov2013-08-02 17:22:23 +0400
committerDmitry Antipov2013-08-02 17:22:23 +0400
commit4b5c9326ce8f6b7856437cbbdbcccb415b38a5fc (patch)
tree797f94ac354fa4eaa7d3b8dc43590fa7824ddf0d /src/widget.c
parent26bb8a7ceb23a748e35afbc895b54e8c1322298f (diff)
downloademacs-4b5c9326ce8f6b7856437cbbdbcccb415b38a5fc.tar.gz
emacs-4b5c9326ce8f6b7856437cbbdbcccb415b38a5fc.zip
Fix X GC leak in GTK and raw (no toolkit) X ports.
* xterm.c (x_free_frame_resources): If white and black relief GCs are allocated, always free them here. * xfns.c (x_make_gc): Omit redundant initialization. * widget.c (create_frame_gcs): Remove the leftover. (EmacsFrameDestroy): Do nothing because all GCs are now freed in x_free_frame_resources.
Diffstat (limited to 'src/widget.c')
-rw-r--r--src/widget.c34
1 files changed, 1 insertions, 33 deletions
diff --git a/src/widget.c b/src/widget.c
index e2c8e9fa23f..f66ec0b80ec 100644
--- a/src/widget.c
+++ b/src/widget.c
@@ -503,26 +503,6 @@ widget_update_wm_size_hints (Widget widget)
503 update_wm_hints (ew); 503 update_wm_hints (ew);
504} 504}
505 505
506
507#if 0
508
509static void
510create_frame_gcs (EmacsFrame ew)
511{
512 struct frame *s = ew->emacs_frame.frame;
513
514 s->output_data.x->normal_gc
515 = XCreateGC (XtDisplay (ew), RootWindowOfScreen (XtScreen (ew)), 0, 0);
516 s->output_data.x->reverse_gc
517 = XCreateGC (XtDisplay (ew), RootWindowOfScreen (XtScreen (ew)), 0, 0);
518 s->output_data.x->cursor_gc
519 = XCreateGC (XtDisplay (ew), RootWindowOfScreen (XtScreen (ew)), 0, 0);
520 s->output_data.x->black_relief.gc = 0;
521 s->output_data.x->white_relief.gc = 0;
522}
523
524#endif /* 0 */
525
526static char setup_frame_cursor_bits[] = 506static char setup_frame_cursor_bits[] =
527{ 507{
528 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 508 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -683,19 +663,7 @@ EmacsFrameRealize (Widget widget, XtValueMask *mask, XSetWindowAttributes *attrs
683static void 663static void
684EmacsFrameDestroy (Widget widget) 664EmacsFrameDestroy (Widget widget)
685{ 665{
686 EmacsFrame ew = (EmacsFrame) widget; 666 /* All GCs are now freed in x_free_frame_resources. */
687 struct frame* s = ew->emacs_frame.frame;
688
689 if (! s) emacs_abort ();
690 if (! s->output_data.x) emacs_abort ();
691
692 block_input ();
693 x_free_gcs (s);
694 if (s->output_data.x->white_relief.gc)
695 XFreeGC (XtDisplay (widget), s->output_data.x->white_relief.gc);
696 if (s->output_data.x->black_relief.gc)
697 XFreeGC (XtDisplay (widget), s->output_data.x->black_relief.gc);
698 unblock_input ();
699} 667}
700 668
701static void 669static void