Commit acd75cd4 authored by Guido Günther's avatar Guido Günther

Merge commit 'upstream/0.6.1'

parents 31465dca e43ed8a8
......@@ -46,6 +46,11 @@ Further patches have been submitted by:
S. Çağlar Onur <caglar-at-pardus-dot-org-dot-tr>
Claes Strom <cs-at-clabbe-dot-com>
Mike MacCana <mmaccana-at-au1-dot-ibm-dot-com>
Andrew Gillies <anaru-at-main-dot-com>
Richard Laager <rlaager-at-wiktel-dot-com>
James Ralston <ralston-at-pobox-dot-com>
Radek Hladik <radek-at-eadresa-dot-cz>
Michael Marineau (marineam-at-gentoo-dot-org)
<...send a patch & get your name here...>
......
This diff is collapsed.
......@@ -6,3 +6,9 @@ EXTRA_DIST = @PACKAGE@.spec COPYING-DOCS xmldocs.make omf.make \
intltool-extract.in intltool-merge.in intltool-update.in
DISTCLEAN_FILES = @PACKAGE@.spec intltool-extract intltool-merge intltool-update
rpm: clean
$(MAKE) dist && rpmbuild -ta $(distdir).tar.gz
check-pylint:
tests/pylint-virt-manager.sh
......@@ -670,6 +670,12 @@ uninstall-am:
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
uninstall uninstall-am
rpm: clean
$(MAKE) dist && rpmbuild -ta $(distdir).tar.gz
check-pylint:
tests/pylint-virt-manager.sh
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
Virtual Machine Manager News
============================
Release 0.6.1 (January 26th, 2009)
----------------------------------
This release includes:
- VM disk and network stats reporting (Guido Gunther)
- VM Migration support (Shigeki Sakamoto)
- Support for adding sound devices to an existing VM
- Enumerate host devices attached to an existing VM
- Allow specifying a device model when adding a network device to an
existing VM
- Combine the serial console view with the VM Details window
- Allow connection to multiple VM serial consoles
- Bug fixes and many minor improvements.
Release 0.6.0 (September 10th, 2008)
------------------------------------
......
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61 for virt-manager 0.6.0.
# Generated by GNU Autoconf 2.61 for virt-manager 0.6.1.
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
......@@ -726,8 +726,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='virt-manager'
PACKAGE_TARNAME='virt-manager'
PACKAGE_VERSION='0.6.0'
PACKAGE_STRING='virt-manager 0.6.0'
PACKAGE_VERSION='0.6.1'
PACKAGE_STRING='virt-manager 0.6.1'
PACKAGE_BUGREPORT=''
ac_unique_file="src/virt-manager.py.in"
......@@ -1451,7 +1451,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures virt-manager 0.6.0 to adapt to many kinds of systems.
\`configure' configures virt-manager 0.6.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
......@@ -1521,7 +1521,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of virt-manager 0.6.0:";;
short | recursive ) echo "Configuration of virt-manager 0.6.1:";;
esac
cat <<\_ACEOF
......@@ -1639,7 +1639,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
virt-manager configure 0.6.0
virt-manager configure 0.6.1
generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
......@@ -1653,7 +1653,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by virt-manager $as_me 0.6.0, which was
It was created by virt-manager $as_me 0.6.1, which was
generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@
......@@ -2345,7 +2345,7 @@ fi
# Define the identity of the package.
PACKAGE='virt-manager'
VERSION='0.6.0'
VERSION='0.6.1'
cat >>confdefs.h <<_ACEOF
......@@ -23813,7 +23813,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by virt-manager $as_me 0.6.0, which was
This file was extended by virt-manager $as_me 0.6.1, which was
generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
......@@ -23860,7 +23860,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
virt-manager config.status 0.6.0
virt-manager config.status 0.6.1
configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
......
AC_INIT(virt-manager, 0.6.0)
AC_INIT(virt-manager, 0.6.1)
AC_CONFIG_SRCDIR(src/virt-manager.py.in)
dnl Make automake keep quiet about wildcards & other GNUmake-isms
AM_INIT_AUTOMAKE([-Wno-portability])
......
......@@ -722,7 +722,7 @@
screenshot of the VM's console.</para>
</listitem>
<listitem><para>The <guimenu>View</guimenu> menu adds an item
<guimenuitem>FullScreen</guimenuitem> that will enlarge the Console window
<guimenuitem>Fullscreen</guimenuitem> that will enlarge the Console window
to take up an entire screen, if you are using the graphical
console.</para>
</listitem>
......
......@@ -4,6 +4,6 @@ man_MANS = virt-manager.1
EXTRA_DIST = virt-manager.pod
%.1: %.pod
pod2man $< > $@
pod2man --center="Virtual Machine Manager" $< > $@
CLEANFILES = virt-manager.1
......@@ -431,7 +431,7 @@ uninstall-man: uninstall-man1
%.1: %.pod
pod2man $< > $@
pod2man --center="Virtual Machine Manager" $< > $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
......@@ -5,7 +5,7 @@ virt-manager - display the virtual machine desktop management tool
=head1 SYNOPSIS
B<virt-viewer> [OPTIONS]
B<virt-manager> [OPTIONS]
=head1 DESCRIPTION
......
src/virt-manager.desktop.in.in
src/vmm-about.glade
src/vmm-details.glade
src/vmm-add-hardware.glade
src/vmm-host.glade
src/vmm-choose-cd.glade
src/vmm-manager.glade
src/vmm-create.glade
src/vmm-open-connection.glade
src/vmm-create-net.glade
src/vmm-preferences.glade
src/vmm-create-pool.glade
src/vmm-progress.glade
src/vmm-create-vol.glade
src/virt-manager.py.in
src/virt-manager.schemas.in
src/virtManager/about.py
src/virtManager/connection.py
src/virtManager/createnet.py
src/virtManager/engine.py
src/virtManager/IPy.py
src/virtManager/netdev.py
src/virtManager/secret.py
src/virtManager/__init__.py
src/virtManager/about.py
src/virtManager/addhardware.py
src/virtManager/asyncjob.py
src/virtManager/choosecd.py
src/virtManager/config.py
src/virtManager/connect.py
src/virtManager/connection.py
src/virtManager/create.py
src/virtManager/createvol.py
src/virtManager/createmeter.py
src/virtManager/createnet.py
src/virtManager/createpool.py
src/virtManager/storagevol.py
src/virtManager/storagepool.py
src/virtManager/createvol.py
src/virtManager/details.py
src/virtManager/domain.py
src/virtManager/engine.py
src/virtManager/error.py
src/virtManager/host.py
src/virtManager/keyring.py
src/virtManager/manager.py
src/virtManager/netdev.py
src/virtManager/network.py
src/virtManager/serialcon.py
src/virtManager/asyncjob.py
src/virtManager/details.py
src/virtManager/host.py
src/virtManager/opticalhelper.py
src/virtManager/preferences.py
src/virtManager/config.py
src/virtManager/createmeter.py
src/virtManager/domain.py
src/virtManager/__init__.py
src/virtManager/manager.py
src/virtManager/remote.py
src/virtManager/secret.py
src/virtManager/serialcon.py
src/virtManager/storagepool.py
src/virtManager/storagevol.py
src/virtManager/util.py
src/vmm-about.glade
src/vmm-add-hardware.glade
src/vmm-choose-cd.glade
src/vmm-create-net.glade
src/vmm-create-pool.glade
src/vmm-create-vol.glade
src/vmm-create.glade
src/vmm-details.glade
src/vmm-host.glade
src/vmm-manager.glade
src/vmm-open-connection.glade
src/vmm-preferences.glade
src/vmm-progress.glade
src/virt-manager.desktop.in
src/virt-manager.py
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -55,8 +55,8 @@ enum {
enum {
PROP_0,
PROP_NUMDATAPOINTS,
PROP_DATAARRAY
PROP_DATAARRAY,
PROP_REVERSED,
};
static gpointer parent_class;
......@@ -68,6 +68,7 @@ typedef struct _GtkCellRendererSparklinePrivate GtkCellRendererSparklinePrivate;
struct _GtkCellRendererSparklinePrivate
{
gboolean filled;
gboolean reversed;
GValueArray *data_array;
};
......@@ -137,12 +138,19 @@ static void gtk_cell_renderer_sparkline_class_init (GtkCellRendererSparklineClas
G_PARAM_READABLE | G_PARAM_WRITABLE),
G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property (object_class,
PROP_REVERSED,
g_param_spec_boolean ("reversed",
"Reversed",
"process data from back to front",
FALSE,
G_PARAM_READABLE | G_PARAM_WRITABLE));
g_type_class_add_private (object_class, sizeof (GtkCellRendererSparklinePrivate));
}
static void gtk_cell_renderer_sparkline_finalize (GObject *object)
{
GtkCellRendererSparkline *cellsparkline = GTK_CELL_RENDERER_SPARKLINE (object);
GtkCellRendererSparklinePrivate *priv;
priv = GTK_CELL_RENDERER_SPARKLINE_GET_PRIVATE (object);
......@@ -156,7 +164,6 @@ static void gtk_cell_renderer_sparkline_get_property (GObject *object,
GValue *value,
GParamSpec *pspec)
{
GtkCellRendererSparkline *cellsparkline = GTK_CELL_RENDERER_SPARKLINE (object);
GtkCellRendererSparklinePrivate *priv;
priv = GTK_CELL_RENDERER_SPARKLINE_GET_PRIVATE (object);
......@@ -167,6 +174,10 @@ static void gtk_cell_renderer_sparkline_get_property (GObject *object,
g_value_set_boxed(value, priv->data_array);
break;
case PROP_REVERSED:
g_value_set_boolean(value, priv->reversed);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break;
......@@ -179,7 +190,6 @@ gtk_cell_renderer_sparkline_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec)
{
GtkCellRendererSparkline *cellsparkline = GTK_CELL_RENDERER_SPARKLINE (object);
GtkCellRendererSparklinePrivate *priv;
priv = GTK_CELL_RENDERER_SPARKLINE_GET_PRIVATE (object);
......@@ -191,6 +201,10 @@ gtk_cell_renderer_sparkline_set_property (GObject *object,
priv->data_array = g_value_array_copy(g_value_get_boxed(value));
break;
case PROP_REVERSED:
priv->reversed = g_value_get_boolean(value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break;
......@@ -205,7 +219,6 @@ static void gtk_cell_renderer_sparkline_get_size (GtkCellRenderer *cell,
gint *width,
gint *height)
{
GtkCellRendererSparkline *cellsparkline = (GtkCellRendererSparkline *) cell;
GtkCellRendererSparklinePrivate *priv;
GValueArray *data;
......@@ -229,12 +242,21 @@ static void gtk_cell_renderer_sparkline_get_size (GtkCellRenderer *cell,
}
}
static double get_y (GdkRectangle *cell_area,
static double get_y (GtkCellRendererSparklinePrivate *priv,
GdkRectangle *cell_area,
GValueArray *data,
int index)
{
int n;
double baseline_y = cell_area->y + cell_area->height;
GValue *val = g_value_array_get_nth(data, index);
GValue *val;
if (priv->reversed)
n = data->n_values - 1 - index;
else
n = index;
val = g_value_array_get_nth(data, n);
return baseline_y - (cell_area->height * g_value_get_double(val));
}
......@@ -265,7 +287,7 @@ gtk_cell_renderer_sparkline_render (GtkCellRenderer *cell,
points = g_new(GdkPoint, data->n_values);
for (index=0;index<data->n_values;index++) {
double cx = ((double)index * pixels_per_point);
double cy = get_y (cell_area, data, index);
double cy = get_y (priv, cell_area, data, index);
points[index].x = cx + cell_area->x;
points[index].y = cy;
......
......@@ -4,7 +4,7 @@
#line 3 "../../../src/graphWidgets/pysparklinemodule.override"
#line 3 "./pysparklinemodule.override"
#include <Python.h>
#include "pygobject.h"
#include "sparkline.h"
......
......@@ -41,7 +41,11 @@ static gboolean gtk_sparkline_expose(GtkWidget *widget,
enum {
PROP_0,
PROP_DATAARRAY
PROP_DATAARRAY,
PROP_FILLED,
PROP_REVERSED,
PROP_NUMSETS,
PROP_RGB_ARRAY,
};
static gpointer parent_class;
......@@ -52,7 +56,11 @@ typedef struct _GtkSparklinePrivate GtkSparklinePrivate;
struct _GtkSparklinePrivate
{
gboolean filled;
gboolean reversed;
gint num_sets;
gint points_per_set;
GValueArray *data_array;
GValueArray *rgb_array;
};
......@@ -88,8 +96,11 @@ static void gtk_sparkline_init (GtkSparkline *sparkline)
priv = GTK_SPARKLINE_GET_PRIVATE (sparkline);
priv->filled = TRUE;
// priv->filled = FALSE;
priv->reversed = FALSE;
priv->data_array = g_value_array_new(0);
priv->rgb_array = g_value_array_new(0);
priv->num_sets = 1;
priv->points_per_set = 0;
g_signal_connect (G_OBJECT (sparkline), "expose_event",
G_CALLBACK (gtk_sparkline_expose), NULL);
......@@ -100,6 +111,7 @@ static void gtk_sparkline_class_init (GtkSparklineClass *class)
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
GParamSpec *data_array_spec;
parent_class = g_type_class_peek_parent (class);
......@@ -111,18 +123,48 @@ static void gtk_sparkline_class_init (GtkSparklineClass *class)
widget_class->size_request = gtk_sparkline_size_request;
//widget_class->expose_event = gtk_sparkline_expose;
data_array_spec = g_param_spec_double("data_array_value",
"Data array value",
"GValueArray element",
0.0,
100.0,
0,
G_PARAM_READABLE | G_PARAM_WRITABLE);
g_object_class_install_property (object_class,
PROP_DATAARRAY,
g_param_spec_value_array ("data_array",
"Data array",
"GValueArray of data",
g_param_spec_double("data_array_value",
"Data array value",
"GValueArray element",
0.0,
100.0,
0,
G_PARAM_READABLE | G_PARAM_WRITABLE),
data_array_spec,
G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property (object_class,
PROP_NUMSETS,
g_param_spec_int ("num_sets",
"Num Sets",
"Number of data sets in data",
1, 2, 1,
G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property (object_class,
PROP_FILLED,
g_param_spec_boolean ("filled",
"Filled",
"fill space under sparcline",
TRUE,
G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property (object_class,
PROP_REVERSED,
g_param_spec_boolean ("reversed",
"Reversed",
"process data from back to front",
FALSE,
G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property (object_class,
PROP_RGB_ARRAY,
g_param_spec_value_array ("rgb",
"RGB Array",
"GValueArray of rgb values",
data_array_spec,
G_PARAM_READABLE | G_PARAM_WRITABLE));
g_type_class_add_private (object_class, sizeof (GtkSparklinePrivate));
......@@ -130,12 +172,9 @@ static void gtk_sparkline_class_init (GtkSparklineClass *class)
static void gtk_sparkline_finalize (GObject *object)
{
GtkSparkline *cellsparkline = GTK_SPARKLINE (object);
GtkSparklinePrivate *priv;
priv = GTK_SPARKLINE_GET_PRIVATE (object);
(* G_OBJECT_CLASS (parent_class)->finalize) (object);
}
......@@ -144,7 +183,6 @@ static void gtk_sparkline_get_property (GObject *object,
GValue *value,
GParamSpec *pspec)
{
GtkSparkline *cellsparkline = GTK_SPARKLINE (object);
GtkSparklinePrivate *priv;
priv = GTK_SPARKLINE_GET_PRIVATE (object);
......@@ -155,6 +193,18 @@ static void gtk_sparkline_get_property (GObject *object,
g_value_set_boxed(value, priv->data_array);
break;
case PROP_NUMSETS:
g_value_set_int(value, priv->num_sets);
break;
case PROP_FILLED:
g_value_set_boolean(value, priv->filled);
break;
case PROP_REVERSED:
g_value_set_boolean(value, priv->reversed);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break;
......@@ -167,7 +217,6 @@ gtk_sparkline_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec)
{
GtkSparkline *cellsparkline = GTK_SPARKLINE (object);
GtkSparklinePrivate *priv;
priv = GTK_SPARKLINE_GET_PRIVATE (object);
......@@ -177,9 +226,27 @@ gtk_sparkline_set_property (GObject *object,
case PROP_DATAARRAY:
g_value_array_free(priv->data_array);
priv->data_array = g_value_array_copy(g_value_get_boxed(value));
priv->points_per_set = priv->data_array->n_values / priv->num_sets;
gtk_widget_queue_draw(GTK_WIDGET(object));
break;
case PROP_RGB_ARRAY:
g_value_array_free(priv->rgb_array);
priv->rgb_array = g_value_array_copy(g_value_get_boxed(value));
break;
case PROP_FILLED:
priv->filled = g_value_get_boolean(value);
break;
case PROP_REVERSED:
priv->reversed = g_value_get_boolean(value);
break;
case PROP_NUMSETS:
priv->num_sets = g_value_get_int(value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break;
......@@ -189,7 +256,6 @@ gtk_sparkline_set_property (GObject *object,
static void gtk_sparkline_size_request(GtkWidget *widget,
GtkRequisition *area)
{
GtkSparkline *sparkline = (GtkSparkline *) widget;
GtkSparklinePrivate *priv;
GValueArray *data;
......@@ -198,17 +264,24 @@ static void gtk_sparkline_size_request(GtkWidget *widget,
data = priv->data_array;
if (area) {
area->width = data->n_values;
area->width = data->n_values / priv->num_sets;
area->height = 20;
}
}
static double get_y (GtkAllocation *cell_area,
GValueArray *data,
int index)
static double get_y (GtkSparklinePrivate *priv, GtkAllocation *cell_area,
GValueArray *data, int set, int index)
{
double baseline_y = cell_area->height;
GValue *val = g_value_array_get_nth(data, index);
int n;
n = set * priv->points_per_set;
if (priv->reversed)
n += priv->points_per_set - 1 - index;
else
n += index;
GValue *val = g_value_array_get_nth(data, n);
return baseline_y - ((cell_area->height-1) * g_value_get_double(val));
}
......@@ -219,27 +292,15 @@ gtk_sparkline_expose (GtkWidget *widget,
{
GtkSparklinePrivate *priv;
GValueArray *data;
GdkPoint *points;
int index;
int index, set;
double pixels_per_point;
GtkAllocation *cell_area = &widget->allocation;
#if USE_CAIRO
cairo_t *cr;
#endif
priv = GTK_SPARKLINE_GET_PRIVATE (widget);
data = priv->data_array;
pixels_per_point = (double)cell_area->width / ((double)data->n_values-1);
points = g_new(GdkPoint, data->n_values);
for (index=0;index<data->n_values;index++) {
double cx = ((double)index * pixels_per_point);
double cy = get_y (cell_area, data, index);
points[index].x = cx;
points[index].y = cy;
}
pixels_per_point = (double)cell_area->width / ((double)priv->points_per_set-1);
gdk_draw_rectangle(widget->window,
widget->style->mid_gc[GTK_WIDGET_STATE (widget)],
......@@ -266,7 +327,6 @@ gtk_sparkline_expose (GtkWidget *widget,
cell_area->height/NTICKS*index);
}
#if USE_CAIRO
cr = gdk_cairo_create (widget->window);
/* Clip to the cell: */
......@@ -274,26 +334,34 @@ gtk_sparkline_expose (GtkWidget *widget,
cairo_rectangle (cr, 0, 0, cell_area->width, cell_area->height);
cairo_clip (cr);
/* Render the line: */
/* Render the lines: */
cairo_set_line_width (cr, (double)0.5);
for (index=0;index<data->n_values;index++) {
double cx = points[index].x;
double cy = points[index].y;
if (index) {
cairo_line_to (cr, cx, cy);
} else {
cairo_move_to (cr, cx, cy);
for (set=0; set < priv->num_sets; set++) {
if (priv->rgb_array->n_values == priv->num_sets * 3) {
cairo_set_source_rgb (cr,
g_value_get_double(g_value_array_get_nth(priv->rgb_array, set*3)),
g_value_get_double(g_value_array_get_nth(priv->rgb_array, set*3+1)),
g_value_get_double(g_value_array_get_nth(priv->rgb_array, set*3+2)));
}
}
if (data->n_values) {
if (priv->filled) {
double baseline_y = cell_area->height + cell_area->y;
cairo_line_to (cr, cell_area->x + cell_area->width, baseline_y);
cairo_line_to (cr, 0, baseline_y);
cairo_fill (cr);
} else {
cairo_stroke (cr);
for (index=0; index < priv->points_per_set; index++) {
double cx = ((double)index * pixels_per_point);
double cy = get_y (priv, cell_area, data, set, index);
if (index) {
cairo_line_to (cr, cx, cy);
} else {
cairo_move_to (cr, cx, cy);
}
}
if (priv->points_per_set) {
if (priv->filled) {
double baseline_y = cell_area->height + cell_area->y;
cairo_line_to (cr, cell_area->x + cell_area->width, baseline_y);
cairo_line_to (cr, 0, baseline_y);
cairo_fill (cr);
} else {
cairo_stroke (cr);
}
}
}
......@@ -302,14 +370,6 @@ gtk_sparkline_expose (GtkWidget *widget,
cairo_destroy (cr);
#else
gdk_draw_lines(widget->window,
widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
points, data->n_values);