[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#254257: marked as done (libxcursor1: Xrendered Xcursor rendering artifacts & flicker)



Your message dated Mon, 14 Jun 2004 22:42:14 -0400
with message-id <1087267334.27110.31.camel@illuvatar>
and subject line Bug#254257: libxcursor1: Xrendered Xcursor rendering artifacts & flicker
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--------------------------------------
Received: (at submit) by bugs.debian.org; 13 Jun 2004 21:56:45 +0000
>From jbrandmeyer@earthlink.net Sun Jun 13 14:56:45 2004
Return-path: <jbrandmeyer@earthlink.net>
Received: from albatross.mail.pas.earthlink.net [207.217.120.120] 
	by spohr.debian.org with esmtp (Exim 3.35 1 (Debian))
	id 1BZcy4-00021l-00; Sun, 13 Jun 2004 14:56:44 -0700
Received: from user-0ce2kt7.cable.mindspring.com ([24.225.83.167] helo=illuvatar)
	by albatross.mail.pas.earthlink.net with esmtp (Exim 3.33 #1)
	id 1BZcy3-0005Fd-00; Sun, 13 Jun 2004 14:56:43 -0700
Received: from jonathan by illuvatar with local (Exim 3.36 #1 (Debian))
	id 1BZcy2-0005g3-00; Sun, 13 Jun 2004 17:56:42 -0400
Content-Type: multipart/mixed; boundary="===============1466714169=="
MIME-Version: 1.0
From: Jonathan Brandmeyer <jbrandmeyer@earthlink.net>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: libxcursor1: Xrendered Xcursor rendering artifacts & flicker
X-Mailer: reportbug 2.61
Date: Sun, 13 Jun 2004 17:56:41 -0400
Message-Id: <[🔎] E1BZcy2-0005g3-00@illuvatar>
Sender: Jonathan Brandmeyer <jonathan@illuvatar>
X-BadReturnPath: jonathan@illuvatar rewritten as jbrandmeyer@earthlink.net
  using "From" header
Delivered-To: submit@bugs.debian.org
X-Spam-Checker-Version: SpamAssassin 2.60-bugs.debian.org_2004_03_25 
	(1.212-2003-09-23-exp) on spohr.debian.org
X-Spam-Status: No, hits=-7.0 required=4.0 tests=BAYES_01,HAS_PACKAGE 
	autolearn=no version=2.60-bugs.debian.org_2004_03_25
X-Spam-Level: 

This is a multi-part MIME message sent by reportbug.

--===============1466714169==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Package: libxcursor1
Version: 1.1.3-1
Severity: normal


The latest GNOME upgrades shifted /etc/alternatives/x-cursor-theme to 
the high-quality Industrial theme cursors.  That change exposed 
one or more bugs in the way that XRender renders cursors on the 
screen.

First, the cursor will flicker whenever doing one of several drag 
actions that causes the parent window to be redrawn: window resizing by 
drag, resizing a window pane, and during the rendering of webpages in 
Galeon or Mozilla.

Second, when using Blender, the various OpenGL-drawn widgets are not 
being updated properly when you move the mouse accross them.  Also, 
whenever dragging a model through some movement, there is noticable 
distortion around the area covered by the mouse.

Finally, in a simple OpenGL program that does nothing but swap its 
buffers (attached), the mouse will disappear entirely when it hovers 
over the window and remains still.  As you move the mouse within the 
window, it reappears but flickers.

Changing cursor.c (in the libxcursor1 package) line 548 to "#if 0" works 
around the problem by converting the cursor to a simple bitmap and 
avoids use of XRender, but yields a set of somewhat ugly cursors.

Hardware:
Pentium 3 with an NVIDIA TNT2 M64 AGP video card.

Software configurations tested:
nvidia driver with and without the RenderAccel option set.
nv driver with Mesa software OpenGL.

The attached test program should be compiled with:
$ g++ -o mouse_test `pkg-config --cflags --libs gtkglextmm-1.0` \
mouse_test.cpp
and run with no arguments.  The libgtkglextmm1-dev package must be
installed to build the program.

Feel free to reassign this to whatever X package is most appropriate.

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Kernel: Linux 2.6.5-1-686
Locale: LANG=en_US, LC_CTYPE=en_US

Versions of packages libxcursor1 depends on:
ii  libc6                     2.3.2.ds1-13   GNU C Library: Shared libraries an
ii  libx11-6                  4.3.0.dfsg.1-4 X Window System protocol client li
ii  libxrender1               0.8.3-7        X Rendering Extension client libra
ii  xlibs                     4.3.0.dfsg.1-4 X Window System client libraries m

-- no debconf information

--===============1466714169==
Content-Type: text/x-c; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="mouse_test.cpp"

/* Copyright (C) 2004  Jonathan Brandmeyer
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public
 * License as published by the Free Software Foundation,
 * version 2.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public
 * License along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA.
 */

#include <gtkmm.h>

#ifdef GTKMM_2_4
#include <sigc++/compatibility.h>
#endif

// Headers for gtkglextmm
#include <gtkmm/gl/drawingarea.h>
#include <gdkmm/gl/init.h>

#include <GL/gl.h>

#include <iostream>
#include <cstdlib>

class scene : public Gtk::GL::DrawingArea
{
 public:
	scene();
	virtual ~scene();
	
 private:
	virtual void on_realize();
	virtual bool on_configure_event(GdkEventConfigure* event);
	bool gl_render();
	virtual bool on_expose_event(GdkEventExpose* event);
};

// Only configuration work gets done here.
scene::scene()
{
	// Create a double-buffered Configuration.
	Glib::RefPtr<Gdk::GL::Config> config 
		= Gdk::GL::Config::create( 
		Gdk::GL::MODE_RGB | Gdk::GL::MODE_DEPTH | Gdk::GL::MODE_DOUBLE);
	if (!config) {
		std::cerr << "Could not create any OpenGL surface\n";
		std::exit(1);
	}
	set_gl_capability(config);		
}

scene::~scene()
{
}

// Set up parameters common for the scene.  This is called only once when the
// widget is created.
void
scene::on_realize()
{
	Gtk::GL::DrawingArea::on_realize();
	if (!get_gl_window()->gl_begin(get_gl_context()))
		return;
	// Use a transparent black background when clearing it.
	glClearColor( 0, 0, 0, 0);
	get_gl_window()->gl_end();
	Glib::signal_timeout().connect( SigC::slot( *this, &scene::gl_render), 33);
	
}

// Called when the window is resized.
bool
scene::on_configure_event(GdkEventConfigure* event)
{
	// The only task here is to pull off the width and height data for
	// glViewPort.
	Glib::RefPtr<Gdk::GL::Window> gl_window = get_gl_window();
	gl_window->gl_begin(get_gl_context());
	glViewport(0, 0, event->width, event->height);
	gl_window->gl_end();
	return true;
}

bool
scene::gl_render()
{
	// Draw the scene
	get_gl_window()->gl_begin(get_gl_context());
	// glClear(GL_COLOR_BUFFER_BIT);
	get_gl_window()->swap_buffers();
	return true;
}

// Called when the window needs to be redrawn due to another window passing
// in front of it on the screen.
bool
scene::on_expose_event( GdkEventExpose*)
{
	gl_render();
}

// The wrapping application.
class simple : public Gtk::Window
{
 private:
	scene m_scene;
	
 public:
	simple();
	virtual ~simple();
};

simple::simple()
{
	// Sets the title of this window.
	set_title( "Mouse test");
	m_scene.set_size_request( 200, 200);
	add(m_scene);
	show_all();
}

simple::~simple()
{
}

int
main( int argc, char** argv)
{
	// Initialize Gtkmm.
	Gtk::Main kit(&argc, &argv);
	// Initialize GtkGLExt
	Gdk::GL::init(&argc, &argv);
	
	// Create the Main Window
	simple app;
	
	// Enter the main loop - return when the window is closed.
	kit.run(app);
	return 0;	
}

--===============1466714169==--

---------------------------------------
Received: (at 254257-done) by bugs.debian.org; 15 Jun 2004 02:42:17 +0000
>From jbrandmeyer@earthlink.net Mon Jun 14 19:42:17 2004
Return-path: <jbrandmeyer@earthlink.net>
Received: from bittern.mail.pas.earthlink.net [207.217.120.119] 
	by spohr.debian.org with esmtp (Exim 3.35 1 (Debian))
	id 1Ba3tx-0003KA-00; Mon, 14 Jun 2004 19:42:17 -0700
Received: from user-0ce2kt7.cable.mindspring.com ([24.225.83.167] helo=[192.168.1.3])
	by bittern.mail.pas.earthlink.net with esmtp (Exim 3.33 #1)
	id 1Ba3tv-0006se-00; Mon, 14 Jun 2004 19:42:15 -0700
Subject: Re: Bug#254257: libxcursor1: Xrendered Xcursor rendering artifacts
	& flicker
From: Jonathan Brandmeyer <jbrandmeyer@earthlink.net>
To: Michel =?ISO-8859-1?Q?D=E4nzer?= <daenzer@debian.org>
Cc: 254257-done@bugs.debian.org
In-Reply-To: <[🔎] 1087256794.4192.293.camel@localhost>
References: <[🔎] E1BZcy2-0005g3-00@illuvatar>
	 <[🔎] 1087164822.4193.213.camel@localhost> <[🔎] 1087184018.23566.65.camel@illuvatar>
	 <[🔎] 1087256794.4192.293.camel@localhost>
Content-Type: text/plain; charset=ISO-8859-1
Message-Id: <1087267334.27110.31.camel@illuvatar>
Mime-Version: 1.0
X-Mailer: Ximian Evolution 1.4.6 
Date: Mon, 14 Jun 2004 22:42:14 -0400
Content-Transfer-Encoding: quoted-printable
Delivered-To: 254257-done@bugs.debian.org
X-Spam-Checker-Version: SpamAssassin 2.60-bugs.debian.org_2004_03_25 
	(1.212-2003-09-23-exp) on spohr.debian.org
X-Spam-Status: No, hits=-6.0 required=4.0 tests=BAYES_00,HAS_BUG_NUMBER 
	autolearn=no version=2.60-bugs.debian.org_2004_03_25
X-Spam-Level: 

On Mon, 2004-06-14 at 19:46, Michel D=E4nzer wrote:
> On Sun, 2004-06-13 at 23:33 -0400, Jonathan Brandmeyer wrote:
> > On Sun, 2004-06-13 at 18:13, Michel D=E4nzer wrote:
> > > On Sun, 2004-06-13 at 17:56 -0400, Jonathan Brandmeyer wrote:
> > > > Finally, in a simple OpenGL program that does nothing but swap its=20
> > > > buffers (attached), the mouse will disappear entirely when it hover=
s=20
> > > > over the window and remains still.  As you move the mouse within th=
e=20
> > > > window, it reappears but flickers.
> > >=20
> > > Sounds like expected side effects of software cursors. If you can't l=
ive
> > > with them, don't use ARGB cursors or use a driver that supports them =
in
> > > hardware.
> >=20
> > According to the function NVUseHWCursorARGB() in
> > xc/programs/Xserver/hw/xfree86/drivers/nv/nv_cursor.c, the hardware doe=
s
> > support it if the cursor size is less than 64x64 pixels.
>=20
> That's not the whole story. pNv->alphaCursor is only set for newer
> chipsets. Are you sure your chipset supports ARGB cursors?

Well, according to the nv_driver.c, only GeForce 2 and newer NVIDIA
chipsets support ARGB cursors.  All of the docs that I can find only say
that "True color" hardware cursors are supported, with no mention of an
alpha channel.  Sounds like its time for an upgrade :)

Thanks for your time and patience.



Reply to: