kmb42vt wrote:Damn! You beat me to it. I isolated the freeze to the 32 bit version but not to what the problem exactly was. Good on ya! Okay, so I'm plenty crazy. Let me know what your other work around is--I'll try it and if it works and you're sure about the 32 bit thing, Clem should be notified.
Ok, here we go...
So you love doing crazy stuff, and for some other crazy reason you want to keep the default cinnamon installation instead of using the
cinnamon-nightly ppa... but without the freeze. Then something has to change... and that's
Clutter (the software library that Gnome3 based desktops use to do all the graphic stuff).
We are going to patch and recompile Ubuntu's Clutter package.
Let's start changing our
sources.list in order to get Clutter's source code:
Change it to this:
Code: Select all
deb http://packages.linuxmint.com/ maya main upstream import
deb http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ precise-security main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu/ precise-security main restricted universe multiverse
deb http://archive.canonical.com/ubuntu/ precise partner
deb http://packages.medibuntu.org/ precise free non-free
#deb http://archive.removed/ubuntu precise-removed apps
#deb http://archive.removed/ubuntu precise-removed games
Save it and run a "sudo apt-get update".
Now it's time to get the development tools. Run this at a terminal:
Code: Select all
sudo apt-get install build-essential fakeroot dpkg-dev devscripts
And now the dependencies to compile Clutter:
Code: Select all
sudo apt-get build-dep clutter-1.0
Let's create a folder to build our patched clutter:
Code: Select all
mkdir mypatchedclutter
cd mypatchedclutter
And now let's get the source code:
Ok, here the fun part. Go to your
personal folder/mypatchedclutter/clutter-1.0-1.10.6/clutter/ and open a file named
clutter-actor.c. At line 15364 you'll find this piece of code:
Code: Select all
static gboolean
_clutter_actor_get_paint_volume_real (ClutterActor *self,
ClutterPaintVolume *pv)
{
ClutterActorPrivate *priv = self->priv;
/* Actors are only expected to report a valid paint volume
* while they have a valid allocation. */
if (G_UNLIKELY (priv->needs_allocation))
{
CLUTTER_NOTE (CLIPPING, "Bail from get_paint_volume (%s): "
"Actor needs allocation",
_clutter_actor_get_debug_name (self));
return FALSE;
}
Now change it to this and save it (we've only added a line with "return FALSE;"):
Code: Select all
static gboolean
_clutter_actor_get_paint_volume_real (ClutterActor *self,
ClutterPaintVolume *pv)
{
ClutterActorPrivate *priv = self->priv;
return FALSE; //This is my dirty dirty patch
/* Actors are only expected to report a valid paint volume
* while they have a valid allocation. */
if (G_UNLIKELY (priv->needs_allocation))
{
CLUTTER_NOTE (CLIPPING, "Bail from get_paint_volume (%s): "
"Actor needs allocation",
_clutter_actor_get_debug_name (self));
return FALSE;
}
Now move up to the
/mypatchedclutter/clutter-1.0-1.10.6/ folder, open a terminal there and execute this:
The
dch tool will ask you to choose an editor, just use the 2nd option (nano). Then you'll see some text lines, you only have to fill the empty line starting with a "*" with some indication of the change you just made, then press Ctrl+O to save that and then Ctrl+X to exit the
dch tool:
Code: Select all
clutter-1.0 (1.10.6-1~precise1ubuntu1) precise; urgency=low
* My ugly dirty patch
-- Esteban <esteban@esteban-cinnamon> Mon, 16 Jul 2012 23:39:13 -0300
clutter-1.0 (1.10.6-1~precise1) precise-proposed; urgency=low
* No change upload to Ubuntu 12.04 (LP: #1003208)
- Fix broken scrolling for embedded GTK+ widgets (LP: #990302)
-- Jeremy Bicha <jbicha@ubuntu.com> Sat, 02 Jun 2012 12:57:46 -0400
clutter-1.0 (1.10.6-1) unstable; urgency=low
* New upstream release.
-- Michael Biebl <biebl@debian.org> Sat, 02 Jun 2012 14:13:10 +0200
Ok, now we're ready to compile!!!
At the same terminal (started at /mypatchedclutter/clutter-1.0-1.10.6/) execute the following code and wait a couple of minutes for the compilation to finish:
Code: Select all
dpkg-buildpackage -rfakeroot -uc -b
You'll see a lot of warnings and other info. Don't worry, let the thing run and at the end you'll find 7 new patched clutter packages at your
/mypatchedclutter/ folder.
So now let's install the 3 relevant ones. Open a terminal at your
/mypatchedclutter/ folder and execute this code:
Code: Select all
sudo dpkg -i gir1.2-clutter-1.0_1.10.6-1~precise1ubuntu1_i386.deb libclutter-1.0-0_1.10.6-1~precise1ubuntu1_i386.deb libclutter-1.0-common_1.10.6-1~precise1ubuntu1_all.deb
Then restart, select Cinnamon at the login manager and... bye-bye freeze!!!
Ok, that's nice for an experiment, but now you want to go back to the original clutter packages (and you're so much loved cinnamon freeze). Open a terminal and execute the following:
Code: Select all
sudo apt-get install gir1.2-clutter-1.0=1.10.6-1~precise1 libclutter-1.0-0=1.10.6-1~precise1 libclutter-1.0-common=1.10.6-1~precise1
Oh yeah... freeze... I'm at home again.