Re: GtkFileChooser and GVFS backend

2007-12-20 Thread Alexander Larsson

On Wed, 2007-12-19 at 13:25 -0500, Matthias Clasen wrote:
> On Dec 19, 2007 4:00 AM, Alexander Larsson <[EMAIL PROTECTED]> wrote:
> 
> >
> > Yes, both of these are part of the long-term plan. However, we need to
> > have the GtkFileSystem module for the next gnome module, as that will
> > have the new glib, but not a new Gtk+.
> 
> Talking about that...
> we need a plan for how to handle the gvfs filechooser backend for 2.22.
> I think it will be best to put it in libgnomeui, next to (or
> replacing) the gnome-vfs backend thats already there.
> 
> After 2.22 we can look at moving it over to gtk itself, or doing something
> better.
> 
> Does that sound reasonable ?

Sounds reasonable to me.

___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Re: [gfvs] cdda backend

2007-12-20 Thread Alexander Larsson

On Wed, 2007-12-19 at 16:43 -0500, David Zeuthen wrote:

> > > I'm thinking this can also be used for the "favorite" servers like we
> > > have today in gnome-vfs; e.g. we just implement a volume monitor that
> > > creates GVolume objects that matches a list in gconf. Then when the
> > > mount is actually created the volume monitor adopts the DaemonMount in
> > > it's adopt_orphan_mount() function.
> 
> Btw, is this how we should implement it? Or did you have anything else
> in mind? I really miss my "public_html @ p.fd.o" link that comes up
> automatically - I use it a lot when doing screen shots to share. 
> 
> I think if we do the feature this way (a gvfs module that links in
> gconf) it can be written in a day or less.

Well, Its certainly a good way to implement connect to server as it
existed before. However, the question is whether this is the best design
in the new gio world. In the pre-gio world there were no "mounts" for a
remote share like your example, so it didn't appear anywhere. Connect to
server was added to sort of make it into a mount. But in the new world
we actually have a mount object, so the need to make it look like there
is a mount is gone. 

However, as you say this is used for another thing, namely easy access
to the share. In the gio world this would mean having a GVolume for the
GMount so that it is easy to mount. At the very least this would involve
changing how connect to server is exposed in the UI and what it is
called. There is also how it relates to bookmarks, which is another
not-quite-the-same way to quickly get to places.

So, I guess the question is, in what way is it better to have
"public_html @ p.fd.o" be a volume than using a bookmark for this?

> > So, can there never be a situation where the GMount gets created before
> > the corresponding GVolume object is? And in that case, how does the
> > GVolume locate the mount?
> 
> That's a good question; it's not supported in the API yet because that
> situation can never happen for the use I wrote it for (cdda:// backend).
> 
> How about a another vtable entry in the GVolumeMonitor
> 
>  gboolean (*request_adoption_of_orphan_mount) (GVolume *adopter,
>GMount *orphan);
> 
> that each implementation can implement? Alternatively we can put this
> method on the GMount interface but that seems wrong since it's only
> something volume monitors would ever want to do.

The volume monitor would recurse over all volumes and call this?

Isn't it better to have something like: 

 GMount * (*find_orphan_mount_for_adoption) (GVolumeMonitor *monitor,
 GVolume *adopter)
 

> > > Other thoughts / questions about the API
> > > 
> > >  - Busy mounts. Right now the cdda:// backend refuses to unmount
> > >if there are open files on it. I think that's probably the right
> > >thing to do for any backend. 
> 
> Btw, what are you thoughts about this? I feel strongly this is the right
> thing to do .. otherwise you can lose data.
> 
> I'd even go as far and say that the GVfsBackend base class should
> automatically return G_IO_ERROR_BUSY on unmount() when there are pending
> jobs. At least that would be the default unmount() operation unless you
> override it.

Sure, thats probably a good thing.

> > >  - Further, if a mount can't be unmounted because it's busy (and
> > >we can't avoid that since we support mounts backed by kernel
> > >drivers), we probably want something like lsof(8) that Nautilus
> > >and other stuff can use to put up a dialog showing what apps
> > >is blocking the unmount. How about a list_open_files() method
> > >on GMount() that returns an array of
> > > - process id (is that portable? maybe need an abstraction)
> > > - icon
> > > - name
> > > - etc.
> > >Would need backend support for this too.
> > 
> > Now we're getting into really lowlevel bizarro things. I don't think we
> > should really expose this in a generic API. Can't this just be reported
> > in the error message for the G_IO_ERROR_BUSY error when unmounting.
> > 
> > I.E. the error dialog would say "Cannot unmount, because firefox (pid
> > 35) is keeping files open on the volume", or "Cannot unmount, because 13
> > applications are keeping open files on the volume.". Maybe in the last
> > case we should at least give the name (and pid?) of one application so
> > that you can make progress on unmount by killing that.
> 
> Right, I definitely think we want the dialog to look something like this
> 
>  +---+
>  | Cannot unmount "public_html @ p.fd.o", the following  |
>  | applications are still using it   |
>  |   |
>  | [icon] GEdit - Secret Stuff.txt[kill] |
>  | [icon] GEdit - My Diary.txt[kill] |
>  | [icon] Tomboy  [kill] |
>  

Re: [gfvs] cdda backend

2007-12-20 Thread Alexander Larsson

On Wed, 2007-12-19 at 16:43 -0500, David Zeuthen wrote:
> Hi again,
> 
> Almost more questions than answers this time, sorry. Also no patch
> either since I wanted to hear your thoughts before doing the work.
>  it's not supported in the API yet because that
> situation can never happen for the use I wrote it for (cdda:// backend).

I added the unmount flags to all unmount and eject calls and the remount
operation to GMount.

All users are fixed up, but nothing implements these yet.

___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Re: Extended Layout Summary

2007-12-20 Thread Mathias Hasselmann

Am Dienstag, den 20.11.2007, 15:41 -0500 schrieb Havoc Pennington:

> Then the following default implementations:
> 
>   - all four of the new functions have default implementations that
> invoke the current size_request and use it for both min and natural
> size; so unmodified widgets still support the new interface

So you suggest, that GtkWidget implements GtkExtendedLayout?

Ciao,
Mathias
-- 
Mathias Hasselmann <[EMAIL PROTECTED]>
Openismus GmbH: http://www.openismus.com/
Personal Site: http://taschenorakel.de/


signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Re: [gfvs] cdda backend

2007-12-20 Thread David Zeuthen

On Thu, 2007-12-20 at 12:54 +0100, Alexander Larsson wrote:
> On Wed, 2007-12-19 at 16:43 -0500, David Zeuthen wrote:
> > Hi again,
> > 
> > Almost more questions than answers this time, sorry. Also no patch
> > either since I wanted to hear your thoughts before doing the work.
> >  it's not supported in the API yet because that
> > situation can never happen for the use I wrote it for (cdda:// backend).
> 
> I added the unmount flags to all unmount and eject calls and the remount
> operation to GMount.
> 
> All users are fixed up, but nothing implements these yet.

Great, thanks. I'll add this to the unix and hal backends.

Cheers,
David


___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Re: [gfvs] cdda backend

2007-12-20 Thread David Zeuthen

On Thu, 2007-12-20 at 11:57 +0100, Alexander Larsson wrote:
> So, I guess the question is, in what way is it better to have
> "public_html @ p.fd.o" be a volume than using a bookmark for this?

I suppose either works; it was just an idea. The main advantage is that
the icon for the volume wouldn't jump around (bookmarks IIRC are stored
below a separator line in the file chooser and sidebar) if you double
click it in the file chooser. I think bookmarks are more intended for
files or folders? I don't know.

> >  gboolean (*request_adoption_of_orphan_mount) (GVolume *adopter,
> >GMount *orphan);
> > 
> > that each implementation can implement? Alternatively we can put this
> > method on the GMount interface but that seems wrong since it's only
> > something volume monitors would ever want to do.
> 
> The volume monitor would recurse over all volumes and call this?
> 
> Isn't it better to have something like: 
> 
>  GMount * (*find_orphan_mount_for_adoption) (GVolumeMonitor *monitor,
>  GVolume *adopter)

Actually with the proposal I had, the adoptor itself would iterate over
all mounts and use it's own criteria of how to pick an orphan - it's
probably in a better position to choose than the orphan's volume
monitor? I mean, suppose we did "fav servers" as a GVolume stemming from
a "fav servers" volume monitor; how would GDaemonVolumeMonitor know how
to pick adopter? 

(OTOH, the "fav servers" volume monitor backend would have no problem
picking the orphan; it would just compare the get_mount_root() from each
GMount on the system with whatever preferences it relies on)



> I really think you are overreacting a bit on this. For regular unix
> mounts it is often the case that you get stuck with busy mounts, because
> applications with cwd inside the mount keep it open, or due to a dnotify
> watch. However, for gvfs mounts the only time something is busy is if
> there is actually an ongoing operation like a file copy, loading a file
> or something like that. This is far less likely to happen when you
> unmount a volume, and its far easier to be aware of this (for instance
> you'd have a copy file progress notification icon for the file copy, or
> just loading a file in gedit).
>
> Furthermore, since we can make sure we can succeed 100% with a forced
> unmount, having a blunt instrument like killing an application that is
> doing an operation on the volume seems like the wrong thing to do. I
> can't think of any reason you'd want to do this instead of forcefully
> unmounting and have the apps doing the operation get an i/o error.
> 
> So, adding this chunk of lowlevel weird stuff (where you have to expose
> nonportable things like pids, etc) to the supported portable highlevel
> API for this very rare case that we can handle well with a force unmount
> anyway seems like a bad idea.
> 
> Now, maybe you're thinking of using this for unmounting in the hal
> backend were we're talking about unmounting unix filesystems, which do
> not support a nice force unmount and are more likely to be busy. Yes,
> this is more of a problem, but do we really need to expose the
> implementation of lsof in the highlevel API. Isn't it better to just
> encapsulate the whole thing (dialog/widget + getting the data for it) in
> a single call.

Sure, we can do that as well (putting the calls to lsof(8) into the code
creating the dialog). It just seems like a waste to not abstract this
stuff out. There's GPid in glib already so am not sure why this isn't
portable (list_open_files() would be allowed to error out with
G_IO_ERROR_NOT_SUPPORTED of course).

Btw, I wouldn't be so sure about busy mounts; what if you keep you
media collection on a networked share? People are working on moving
people's documents and media off the client and on to hosted storage
services; it seems we'll be getting more of this. (And you can cwd into
~/.gvfs too but I agree that is not so common).

> > 

> If you want to extend this goal, you need to describe exactly what is
> the target of the new API. What should you be able to do with it, and
> what not. Then we can discuss how this is best achieved.

Sure, in addition from the gio volume monitoring just being a utility
library to be used by the file manager and file chooser, I'd like it to
be useful for other things.

First is auto mounters like e.g. gnome-volume-manager. This is necessary
because some file systems for devices like cameras and audio cd's are
not handled by hal (e.g. cdda:// and gphoto2://). So the auto mounter
needs to at least pay attention to the volume monitor to mount a gphoto2
camera and a cdda disc.

The other thing the auto mounter does is prompt the user for what
application to run when media with well-known content is inserted (cf.
this http://people.freedesktop.org/~david/g-v-m-prefs.png ). Hence you
need to have an idea of what could be on the media - similar to
the similar to g_mount_guess_c

Using GLX_EXT_texture_from_pixmap for redirected rendering of widgets/windows.

2007-12-20 Thread Mirco Müller
Greetings xorg/gtk+-crowd!

I finally got that "gtk+-widgets _ontop_ of a GL-context" working and
would like to get some input from anybody interested in the topic.

Apart from toolkit-level input-redirection not working, which is likely
another big chunk of work to design and implement, I am mainly
interested in solving any possible GLXFBConfig-selection issues, people
might run into. Sofar I've only successfully tested it under
metacity/compiz on a GeForce-card and still battle to get it working on
an i965. On the side of rendering-performance I feel that I am still
missing some optimization in the way I do draw the widgets on quads,
because of a slight CPU-hit I experience here (mapping such a small
texture at a refresh of 20Hz or 60Hz should not be noticeable at all).

The general approach used to get it going, is to stuff the widget(s),
which are loaded in from a glade-description, in a GtkEventBox, use
gdk_window_set_composited() on the GtkEventBox to redirect it to an
offscreen pixmap, select a matching GLXFBConfig derived from the
top-level GtkWindow and use GLX_EXT_texture_from_pixmap to finally
obtain a GL-texture from the widgets pixmap. All this is then drawn with
GL right into the top-level GtkWindow.

A screenshot of the examples running...

http://macslow.thepimp.net/shots/gtk-examples-1.png

The source to the examples can be grabbed with...

bzr branch http://bazaar.launchpad.net/~macslow/gtk-offscreen-1/trunk 
gtk-offscreen-1
bzr branch 
http://bazaar.launchpad.net/~macslow/gtk-gl-offscreen-1/trunk gtk-gl-offscreen-1
bzr branch 
http://bazaar.launchpad.net/~macslow/gtk-gl-offscreen-2/trunk gtk-gl-offscreen-2
bzr branch http://bazaar.launchpad.net/~macslow/gtk-gl-rgba-1/trunk 
gtk-gl-rgba-1

Thanks in advance!

Best regards...

Mirco "MacSlow" Müller

___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Re: [gfvs] cdda backend

2007-12-20 Thread Alexander Larsson

On Thu, 2007-12-20 at 10:45 -0500, David Zeuthen wrote:
> On Thu, 2007-12-20 at 11:57 +0100, Alexander Larsson wrote:
> > So, I guess the question is, in what way is it better to have
> > "public_html @ p.fd.o" be a volume than using a bookmark for this?
> 
> I suppose either works; it was just an idea. The main advantage is that
> the icon for the volume wouldn't jump around (bookmarks IIRC are stored
> below a separator line in the file chooser and sidebar) if you double
> click it in the file chooser. I think bookmarks are more intended for
> files or folders? I don't know.

Bookmarks are for folders (you get default bookmarks for things like the
photos folder, etc). 

I'm not saying I know what is best, just that its not obvious what the
best route is.

> > >  gboolean (*request_adoption_of_orphan_mount) (GVolume *adopter,
> > >GMount *orphan);
> > > 
> > > that each implementation can implement? Alternatively we can put this
> > > method on the GMount interface but that seems wrong since it's only
> > > something volume monitors would ever want to do.
> > 
> > The volume monitor would recurse over all volumes and call this?
> > 
> > Isn't it better to have something like: 
> > 
> >  GMount * (*find_orphan_mount_for_adoption) (GVolumeMonitor *monitor,
> >  GVolume *adopter)
> 
> Actually with the proposal I had, the adoptor itself would iterate over
> all mounts and use it's own criteria of how to pick an orphan - it's
> probably in a better position to choose than the orphan's volume
> monitor? I mean, suppose we did "fav servers" as a GVolume stemming from
> a "fav servers" volume monitor; how would GDaemonVolumeMonitor know how
> to pick adopter? 

Hmm, i guess. But how can the fav server volume monitor iterate over all
mounts? It doesn't see other volume monitors.

> Sure, we can do that as well (putting the calls to lsof(8) into the code
> creating the dialog). It just seems like a waste to not abstract this
> stuff out. There's GPid in glib already so am not sure why this isn't
> portable (list_open_files() would be allowed to error out with
> G_IO_ERROR_NOT_SUPPORTED of course).

Well, any time you expose an abstraction like this you limit both how
the backend can work, and what details you can show in the dialog. Plus
you add more stuff to the API that most people really don't need.

What would list_open_files() returns? A list of a new kind of GObject?

> Btw, I wouldn't be so sure about busy mounts; what if you keep you
> media collection on a networked share? People are working on moving
> people's documents and media off the client and on to hosted storage
> services; it seems we'll be getting more of this. (And you can cwd into
> ~/.gvfs too but I agree that is not so common).

You mean while the player plays a media file it would be busy. I guess
thats not to uncommon. pwds in ~/.gvfs don't keep the GVfs busy, as
~/.gvfs is just a single mount.

> The rationale for the patch is to
> 
>  - define "what could be on the media" means (x-content/*)
>  - unify all sniffing code into a single place
>- likely pluggable so 3rd party libs (like libipoddevice), that
>  actually handle dealing with the device in question, can
>  participate
>  - involves name and icon selection too
>  - encourage people to use (and write) gvfs backends instead of using
>Linux/UNIX-only libraries in their apps thus rendering non-portable
> 
> Because, right now, it's a mess and every app (including the auto
> mounter) does their own thing. The result, as you can see from the
> screenshots, is that things not only look different, the names are
> different too. (and ideally, there would be a stock "select_media"
> dialog where you pass one or more x-content/* identifiers.)

Sounds like a good reason.

> Of course, it's fine if this is not a goal for gio but then volume
> monitor API of gio isn't really useful outside the file manager and the
> file chooser and should perhaps be private API instead.

I just want to make sure we don't add something that apps can't use that
we have to support forever. We need to make sure all APIs are right,
sane and useful. I'm tired of maintaining big-bag-of-crap libraries...

___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Re: [gfvs] cdda backend

2007-12-20 Thread David Zeuthen

On Thu, 2007-12-20 at 17:10 +0100, Alexander Larsson wrote:
> Hmm, i guess. But how can the fav server volume monitor iterate over all
> mounts? It doesn't see other volume monitors.

It would use the union monitor through the standard volume monitor API?

> What would list_open_files() returns? A list of a new kind of GObject?

Yeah, I think.

> > Because, right now, it's a mess and every app (including the auto
> > mounter) does their own thing. The result, as you can see from the
> > screenshots, is that things not only look different, the names are
> > different too. (and ideally, there would be a stock "select_media"
> > dialog where you pass one or more x-content/* identifiers.)
> 
> Sounds like a good reason.

I'll try to iterate over the patch. Thanks for considering!

> > Of course, it's fine if this is not a goal for gio but then volume
> > monitor API of gio isn't really useful outside the file manager and the
> > file chooser and should perhaps be private API instead.
> 
> I just want to make sure we don't add something that apps can't use that
> we have to support forever. We need to make sure all APIs are right,
> sane and useful. I'm tired of maintaining big-bag-of-crap libraries...

Yeah. I'll try to be preemptive and raise the idea of x-content/* on the
xdg lists. That's one thing we want standardized...

 David


___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Re: Extended Layout Summary

2007-12-20 Thread Havoc Pennington
Hi,

Mathias Hasselmann wrote:
> Am Dienstag, den 20.11.2007, 15:41 -0500 schrieb Havoc Pennington:
> 
>> Then the following default implementations:
>>
>>   - all four of the new functions have default implementations that
>> invoke the current size_request and use it for both min and natural
>> size; so unmodified widgets still support the new interface
> 
> So you suggest, that GtkWidget implements GtkExtendedLayout?

Several factors I can think of here.

First when implementing each container, it would be nice to avoid:

  if (is_extended_layout(child)) {
use new request API
  } else {
use old size request API
  }

One solution would be that GtkWidget automatically implements extended 
layout in terms of size request. Another solution would be just a 
convenience function that does the above.

I'm guessing your patch already had a solution to this, I don't remember 
what it was.

Two, when implementing a widget, it would be good to avoid writing both 
the old size request and the new extended layout. So, one way to do that 
is that in GtkWidget there's a default implementation of size request 
that invokes extended layout. This may require GtkWidget to implement 
extended layout, or maybe the default impl of size request could do 
GTK_IS_EXTENDED_LAYOUT(), that might be fine too. Then GtkWidget would 
not have to implement extended layout.

Third, since implementing an interface requires extra boilerplate 
GObject stuff, it would be convenient for authors of a custom widget if 
GtkWidget already did the boilerplate for them. Since for newly-written 
custom widgets, the recommendation would be to always support extended 
layout.

Those are the factors I can think of. I might be wrong about them, or 
there may be other factors that are also important and that lead to the 
opposite conclusion.

Havoc

___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Test reports and commit policies

2007-12-20 Thread Tim Janik
Hey All.

A quick update on the unit test reports, a script for test report
generation has now been comitted to GLib and will be used to generate
HTML reports for the test report rules test-report, perf-report and
full-report.
The reports should render in all browsers and support colorization and
collapsed/popup details for CSS and javascript enabled browsers.
Example reports generated from today's SVN are provided here:
http://people.imendio.com/timj/examples/glib-full-report.html
http://people.imendio.com/timj/examples/gtk+-full-report.html

Percentages are reported for the amount of tests that failed or succeeded,
e.g. gtk+/tests/.libs/lt-objecttests is reported with a result of 80.39%,
because ca. 20% of our automated widget property tests fail (generate some
warnings or crash Gtk+, volounteers to look into those cases highly needed).

It'd be nice if someone in the community could set up a build machine for
jhbuild/modulesets/gtk.modules that builds, runs test-report, perf-report
and full-report and uploads the resulting test-report-html, perf-report.html
and full-report.html from GLib and Gtk+ to some public location.

About commit policies, now that we have a test framework in place that
distinguishes between slow (make full-report) and fast (make check) tests,
and allows subcomponent related tests (e.g. make check -C gtk+/gtk/), it'd
be nice to actually make ue of it.

So i'd like to suggest that we establish some basic commit/test
policies, e.g.:

1) Before committing changes in glib/ or gtk+/, a
developer needs to ensure that make check -C glib/ (or
make check -C gtk+/) passes.

2) For major changes (adding new components, changing lots of files,
changing Makefiles, etc.), developers should run make full-report
on the whole module and investigate the failing test cases before
committing.

The exact rules/process is open for discussion of course, the above
is meant as some initial food for thought. Please discuss! ;-)

---
ciaoTJ
___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Re: GLib Testframework API

2007-12-20 Thread Tim Janik
On Tue, 18 Dec 2007, Johan Dahlin wrote:

> Sorry for being late in the game for comments, but here we go.
>
> In general this api differs slightly from JUnit/python, which has the
> following (main) methods:
>
>  assertEqual
>  assertNotEqual
>  assertTrue
>  assertFalse
>  assertRaises

yeah, i've looked at the JUnit API when designig the glib test API, but
didn't find those assertions to be too applicable. e.g. there's not too
much difference in:
   g_assert (condition == TRUE);
   g_assert_true (condition);
   g_assert (condition == FALSE);
   g_assert_fail (condition); // suggested by Behdad

if people strongly feel those need to be added we can do that, i just
fail to see a significant benefit.

> Perhaps the term "equals" could be used instead of "cmp".

the existing API uses "cmp" because it implements memcmp(3) result semantics,
i.e. -1,0,+1 instead of eaqulity ('==') semantics.
for int/hex/float, this should obviously make sense, and for strings it
mimicks the most common comparison API, i.e. strcmp().

> I haven't looked in detail at the trap api, but having something similar to
> assertRaises for g_error & friends would be a good thing.

hm, i'd say the closest thing to assertRaises in glib *is* g_error().
maybe you meant GError? that might be useful to have, patches welcome ;)

> g_assert_cmpstr, accepts a comparison operator, while this makes sense for
> comparing floats and integers I don't think it should be included in the api
> for strings.
> Basically, the only thing you want to check if is a string is equal to
> another or not, so perhaps it could be replaced with:
>
>   g_assert_equals_str
>   g_assert_not_equals_str
>
> Or do you see a use case for using other operators besides == and != ?

sure, if you use strcmp() to sort a list of strings, you'd use
g_assert_cmpstr() to test the invariants. and as i wrote above, offering
'cmp' here instead of 'equals' is what C coders are most used to anyway
(and consistent with the other g_assert_cmp*() variants).
keep in mind that the g_assert_*() family is about convenience anyway,
everyone is free to fallback to g_assert() or if(...)g_error() for his
checks.

a remaining issue i see with g_assert_cmpstr() however is that we should
probably also have g_assert_casecmpstr(), similar to g_strcasecmp().

> Johan

---
ciaoTJ
___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Re: [directfb-dev] Expose event for DirectFb

2007-12-20 Thread Denis Oliver Kropp
Sreenivas Chowdary wrote:
> As far as i know there is no expose equivalent event on DirectFb.
> There are events for DirectFbWindow like window got focus, keypress,
> button press, mouse cursor motion etc
> We also faced same issue about expose event when porting firefox.

DirectFB does only know about the top level windows and never changes
their content on its own. So there's no need for expose events sent
by DirectFB.

A toolkit needs to manage child windows itself and do whatever is needed
to redraw within the top level window surface. Sending expose events,
queueing updates or just calling its drawing functions is up to the toolkit.

I don't have a complete overview of all expose, redraw, paint, update, queue
stuff of GTK+/GDK and the backends. But the code in GDK-DirectFB might still
need some updates, either for fixing issues or to benefit from improvements
in the GDK layer.

-- 
Best regards,
  Denis Oliver Kropp

.--.
| DirectFB - Hardware accelerated graphics |
| http://www.directfb.org/ |
"--"
___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Re: GtkFileChooser and GVFS backend

2007-12-20 Thread Mikael Hermansson
> we need a plan for how to handle the gvfs filechooser backend for
2.22.
> I think it will be best to put it in libgnomeui, next to (or
> replacing) the gnome-vfs backend thats already there.
> 

Seems we never get rid of this deprecated library. But its probadly the
best way at this time.


> After 2.22 we can look at moving it over to gtk itself, or doing
> something
> better.
> 

I really hope this goes in gtk in next release of gtk (so we hopefully
can kill libgnome* :)



/

Mikael  Hermansson

___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Re: GtkFileChooser and GVFS backend

2007-12-20 Thread Emmanuele Bassi

On Thu, 2007-12-20 at 18:59 +0100, Mikael Hermansson wrote:
> > we need a plan for how to handle the gvfs filechooser backend for
> 2.22.
> > I think it will be best to put it in libgnomeui, next to (or
> > replacing) the gnome-vfs backend thats already there.
> > 
> 
> Seems we never get rid of this deprecated library.

not until we break API; until that time, we still have to provide
libgnome*.

>  But its probadly the best way at this time.

it's also the only way, at the moment. :-)

ciao,
 Emmanuele.

-- 
Emmanuele Bassi,
W: http://www.emmanuelebassi.net
B: http://log.emmanuelebassi.net

___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Re: [directfb-dev] Expose event for DirectFb

2007-12-20 Thread Mike Emmel
If you have child widgets that use subsurfaces and they overlap then
you have a expose type issue.

For top level surfaces you can simulate and expose if you track the
first time the
window was "made visible". This correlates with modern X11 servers that use
buffered windows and only send expose on the first show and on resize
for the window.

Overlapping lightweight widgets forces the toolkit to run its own paint manager
generally using the painter algorithm.

I'm working on a new approach for DirectFB and the surface pools are a HUGE
improvement since they lay the ground works for building composite managers
and window manager as two different concepts.

I'm planning on meeting with Denis face to face in January to go over what
I've done to date and directfb.

At the high level is to remove the current windowmanager from DirectFB and
replace it with  a composite manager thats similar but deals with the
new surface pools.

Then we can build Window Manager suited for different toolkits on top.
For desktop
applications the final result would be similar to the current rootless
DirectFB X11 server and concept.

It probably helps the define the various core pieces.

Graphics Core:
Manages Graphics Card and multi process access.
Provides accelerated drawing surfaces and graphics primitives.
Input drivers.

A composite manager:
Manages a Z ordered tree of surfaces generally
rooted on a screen and assigns certain surfaces as belonging
to different processes.  It also does at least basic routing of events
to different processes generally just the window manager.

Window Manager:
Special client that should be allowed to draw window decorations as
the top level surfaces are composited. Does the actual mapping of input
events to windows. And defines what surface or parts of a surface can be drawn
on by regular applications.  X11 does this with a complex clip.
DirectFB provides a shared surface.
X11 window managers are implemented by catching requests to create a
top level and reparenting.
Since child windows are considered to be widgets is directfb X11 is a
bastard composite, window and partial widget manager.

The current DirectFB Window Manager is really a composite manager that
shares the top level surfaces.
The two concepts need to be split.

So you can see that what needs to happen on the directfb side is we
need to decouple the
compositing of top level surfaces from the "window manager".


In my own work I've introduced the concept of canvas which is just a Z
tree of rectangular regions.

This canvas's can use the parent surface or provide their own.
Painting is down with two methods.
Paint and composite that are callbacks from the Composite manager.
Paint is used to either draw on
the parents surface if you don't have a buffer or into your buffer.
Next composite is called which blits
the buffer to the parent.

This is just a library and now the Window Manager becomes a app that
uses the toolkit to create
widgets called windows.

Applications can use the same canvas toolkit to create widgets.

And finally this system is designed with a declarative canvas in mind
so Window managers can just send
the direct drawing code to the canvas manager so it can draw in the
main composite loop.

Now back to Expose. Its really just a notification that a region is
dirty and needs painting so
its better to call expose a paint event.  So at least for my approach
you will get "paint" events
if needed from the canvas manager that can be sent to the application.

So to finish the new design I want to see is.

DirectFB -> surface pool  and top level composite manager.

Window Manager outside of DirectFB.

In my cases I've split the concept into a canvas toolkit used by both
the wm and apps.

Finally we need to reintroduce DirectFB window's and surfaces and
potentially a canvas manager for the API.
But the provider of the window interface is a pure module with the
current api as a compatibility module.

And finally with all this said what I would like to see is that
toolkits like DirectFB request the style of window manager
they would like to use its up to the developer of directfb  Window
managers to provide the interface if requested.
This way we can explore going to a more complex "beyond windows"
desktop application interface and still
support legacy apps based on X11 questionable drawing model if needed.
Thus you see why I want a rootless X server
like concept so we don't have X11 cruft contaminating the core of
directfb just to support legacy toolkits.










On Dec 20, 2007 9:11 AM, Denis Oliver Kropp <[EMAIL PROTECTED]> wrote:
> Sreenivas Chowdary wrote:
> > As far as i know there is no expose equivalent event on DirectFb.
> > There are events for DirectFbWindow like window got focus, keypress,
> > button press, mouse cursor motion etc
> > We also faced same issue about expose event when porting firefox.
>
> DirectFB does only know about the top level windows and never changes
> their content on its own. So there's no

Re: [gfvs] cdda backend

2007-12-20 Thread Matthias Clasen
On Dec 20, 2007 11:36 AM, David Zeuthen <[EMAIL PROTECTED]> wrote:
>

> I'll try to iterate over the patch. Thanks for considering!
>
> > > Of course, it's fine if this is not a goal for gio but then volume
> > > monitor API of gio isn't really useful outside the file manager and the
> > > file chooser and should perhaps be private API instead.
> >
> > I just want to make sure we don't add something that apps can't use that
> > we have to support forever. We need to make sure all APIs are right,
> > sane and useful. I'm tired of maintaining big-bag-of-crap libraries...
>
> Yeah. I'll try to be preemptive and raise the idea of x-content/* on the
> xdg lists. That's one thing we want standardized...
>

Before thinking of standardizing, I'd propose to start a discussion
with the authors of the apps that you have talked so much about here:
f-spot, rhythmbox, etc.
If they all think this is cool, you are onto something and may proceed
to standardization...
___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


GLib 2.15.0 released

2007-12-20 Thread Matthias Clasen
GLib 2.15.0 is now available for download at:

   ftp://ftp.gtk.org/pub/gtk/2.15/
   http://ftp.gnome.org/pub/GNOME/sources/glib/2.15/

glib-2.15.0.tar.bz2 md5sum: 52536475a3f301842cf3448f19af094c
glib-2.15.0.tar.gz  md5sum: 8348f77a5aacf6382ee816f986ae7820

This is the first development release leading up to GLib 2.16.

Notes:

 * This is unstable development release. While it has had
   a bit of testing, there are certainly plenty of bugs
   remaining to be found. This release should not be used
   in production.

 * Installing this version will overwrite your existing
   copy of GLib 2.14. If you have problems, you'll need
   to reinstall GLib 2.14.

 * GLib 2.16 will be source and binary compatible with
   the GLib 2.14 series; however, the new API additions
   in GLib 2.15.0 are not yet finalized, so there may
   be incompatibilities between this release and the final
   2.16 release. In particular GIO may still see API
   changes.

 * The new GIO component in this release is accompanied
   by a new module, GVFS, that contains various backend 
   implementations. GIO can be used without GVFS, but then
   it only supports local filesystems.
 
 * Bugs should be reported to http://bugzilla.gnome.org.
   

About GLib
==

GLib is the low-level core library that forms the basis for projects
such as GTK+ and GNOME. It provides data structure handling for C,
portability wrappers, and interfaces for such runtime functionality as
an event loop, threads, dynamic loading, and an object system.

More information about GLib is available at:

 http://www.gtk.org/

An installation guide for the GTK+ libraries, including GLib, can
be found at:

 http://developer.gnome.org/doc/API/2.0/gtk/gtk-building.html


Overview of Changes from GLib 2.14.x to GLib 2.15.0
===

Major new features:

 * GIO: a VFS API, designed to replace GnomeVFS. The GIO implementation 
   in GLib has support for local filesystems. The new, separate gvfs 
   module contains various backend implementations (cifs, ftp, sftp,
   http, ...)

 * GChecksum: provides various hash algorithms, such as MD5, SHA-1
   and SHA-256
 
 * GTest: a test framework 
 
Smaller additions:

 * GHash:
 - GHash has iterators, as an alternative to g_hash_table_foreach

 * GMarkup: 
 - g_markup_parse_context_get_element_stack: New function to
   get the stack of open elements
 - G_MARKUP_PREFIX_ERROR_POSITION: New flag to improve error
   reporting
 - g_markup_collect_attributes: Convenience function for handling
   attributes

* GKeyFile: 
 - Functions that take a GError now return a boolean to indicate 
   success, instead of void
 - Various performance improvements

* GAsyncQueue:
 - g_async_queue_new_full: new function that allows to specify
   a free function for leftover elements
 
* GError:
 - g_prefix_error and g_propagate_prefixed_error: New functions
   to ease error propagation

* Internationalization:
 - C_: A new 2-argument variant of the Q_() macro 
 - Use native character set conversion API on Windows

* GLib builds with automake 1.10

* Bugs fixed:
 455725 specific combination of g_utf8_strlen and g_pattern_match...
 467537 g_convert_with_iconv() not resetting iconv() state correc...
 497033 Commandline option parser should warn about missing optio...
 504527 gchecksum: Conditional jump or move depends on uninitiali...
 445362 Non-numeric local labels in gatomic.c are causing linker ...
 482313 gregex: no way to tell why compilation failed
 317775 main loops continues to run after g_main_loop_quit() has ...
 418778 Insufficient pkg-config version requirement
 436293 g_option_context_new() doc should mention that the string...
 466557 glib-mkenums shifts ARGV[0] to undefined
 468882 GKeyFile doesn't accept "True" as a true boolean value
 469551 application --help messages are garbaged on none UTF-8 lo...
 479724 Memory leak upon calling "g_main_loop_run" in the seconda...
 490061 outptrs uninitialized after g_parse_long_long
 490637 gobject documentation patch
 495294 glib-genmarshal prints warnings but returns 0
 496046 option to prefix location of errors for GMarkup
 498113 tests/regex-test fails on 64bit environment
 500506 Fails to build on OSX 10.4
 500638 gkeyfile speedup ...
 500875 Make check fails as there is no "test" target for "build"...
 502511 g_assert_cmphex prints invalid message
 502927 g_array_index triggers cast aligment warning
 503029 g_time_val_from_iso8601 parse non-ISO8601 dates
 503222 Need context to translate
 503420 gkeyfile leaks a hash table
 503470 Fix build when builddir != srcdir
 504227 Inverse variant for g_test_trap_assert_stdout, g_test_tra...
 71704  file include order
 491957 Misprint in the specification of the interface "g_main_co...
 491959 Misprint in description of the structure "GThreadPool"
 491965 Mistype in the specification of the function "g_hook_list...
 491966 Misprint in the specification of the interface "g_main_co...
 491968 The documentation