rpms/emelfm2/F-8 e2-0.3.6-07-12-01.patch, NONE, 1.1 .cvsignore, 1.14, 1.15 emelfm2-makefile.config.patch, 1.6, 1.7 emelfm2.spec, 1.24, 1.25 sources, 1.14, 1.15

Christoph Wickert (cwickert) fedora-extras-commits at redhat.com
Sun Dec 2 20:35:09 UTC 2007


Author: cwickert

Update of /cvs/pkgs/rpms/emelfm2/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv6103/F-8

Modified Files:
	.cvsignore emelfm2-makefile.config.patch emelfm2.spec sources 
Added Files:
	e2-0.3.6-07-12-01.patch 
Log Message:
* Sun Dec 02 2007 Christoph Wickert <fedora christoph-wickert de> - 0.3.6-1
- Update 0.3.6 with upstream's e2-0.3.6-07-12-01.patch
- Enable the ACL plugin


e2-0.3.6-07-12-01.patch:

--- NEW FILE e2-0.3.6-07-12-01.patch ---
--- docs/NEWS	2007-11-27 13:16:52.000000000 +1100
+++ docs/NEWS	2007-12-01 12:52:45.000000000 +1100
@@ -1,9 +1,8 @@
 $Id: NEWS 757 2007-11-27 02:16:52Z tpgww $

-== emelFM2 0.3.6 ==   /11/2007
+== emelFM2 0.3.6 == 29/11/2007
 Highlights of this release:
 * some small feature changes, including build-time configuration options for translucent windows etc
-* default to "new" command-execution code
-* around 10 bugfixes
+* around 10 bugfixes, including one to prevent freezes on gtk 2.12

 Details are available at http://emelfm2.net/ChangeLog.
--- Makefile	2007-11-27 13:16:52.000000000 +1100
+++ Makefile	2007-12-01 12:49:14.000000000 +1100
@@ -47,6 +47,6 @@
 VERSION=0.3.6
 #this is effectively a sub-version, to manage config file upgrades while not changing the version
-RELEASE=
-#RELEASE=.1
+#RELEASE=
+RELEASE=.1
 PROGNAME=emelFM2
 BUILDDATE=$(shell date)
@@ -272,13 +272,11 @@
 	@install -d $(MAN_DIR)
 	@install -m 644 docs/$(TARGET).1 $(MAN_DIR);
-	@bzip2 -f $(MAN_DIR)/$(TARGET).1;
+#	@bzip2 -f $(MAN_DIR)/$(TARGET).1;

 ifeq ($(XDG_INTEGRATION), 1)
 		@install -d $(XDG_DESKTOP_DIR)
-		@install -m 644 docs/desktop_environment/$(TARGET).desktop \
-			$(XDG_DESKTOP_DIR)
+	@install -m 644 docs/desktop_environment/$(TARGET).desktop $(XDG_DESKTOP_DIR)
 		@install -d $(XDG_APPLICATION_DIR)
-		@install -m 644 docs/desktop_environment/$(TARGET).applications \
-			$(XDG_APPLICATION_DIR)
+	@install -m 644 docs/desktop_environment/$(TARGET).applications $(XDG_APPLICATION_DIR)
 endif

--- plugins/e2p_find.c	2007-11-06 20:13:06.000000000 +1100
+++ plugins/e2p_find.c	2007-11-30 18:45:37.000000000 +1100
@@ -161,11 +161,18 @@
 	gboolean content_anycase;	//ditto
 	gboolean content_only;	//not looking for anything else
+	gint searchdepth;
 #ifdef TRACKERFIND
 	gint tracker_service;	//index of service in cmd_str[]
 #endif
+#ifdef E2_VFS
+	VPATH sdata;
+#else
+	gchar *localstartpath;
+#endif
 	GList *dirdata;
 #ifdef E2_VFS
 	GError **operr;
 #endif
+	pthread_t findID;
 	gboolean aborted;	//TRUE after STOP button click
 } findtargets;
@@ -358,4 +365,6 @@
 static gboolean _e2p_find_match1 (VPATH *localpath, const struct stat *statptr,
 	findtargets *data);
+static gpointer _e2p_find_dofind (E2_FindDialogRuntime *rt);
+static void _e2p_find_cleanfind (E2_FindDialogRuntime *rt);
 static void _e2p_find_make_name_tab (GtkWidget *notebook, E2_FindDialogRuntime *rt);
 static void _e2p_find_make_size_tab (GtkWidget *notebook, E2_FindDialogRuntime *rt);
@@ -744,7 +753,7 @@
 		if (data->sizeop != ISNA)
 		{
-			if (data->sizeop == ISLT && data->sizetarget >= (guint64) statptr->st_size)
+			if (data->sizeop == ISLT && data->sizetarget <= (guint64) statptr->st_size)
 				return FALSE;
-			if (data->sizeop == ISGT && data->sizetarget <= (guint64) statptr->st_size)
+			if (data->sizeop == ISGT && data->sizetarget >= (guint64) statptr->st_size)
 				return FALSE;
 			if (data->sizeop == ISEQ && data->sizetarget != (guint64) statptr->st_size)
@@ -959,4 +968,9 @@
 //	if (data.contentop == REGX)
 //		regfree (&data.compiledcontent);
+#ifdef E2_VFS
+	g_free (VPSTR(data->sdata));
+#else
+	g_free (data->localstartpath);
+#endif
 }
 /**
@@ -1914,5 +1928,5 @@
 static void _e2p_find_response_cb (GtkDialog *dialog, gint response, E2_FindDialogRuntime *rt)
 {
-	printd (DEBUG, "Find plugin dialog response cb, response %d", response);
+//	printd (DEBUG, "Find plugin dialog response cb, response %d", response);
 	switch (response)
 	{
@@ -2099,7 +2113,5 @@
 @brief callback for find button click

-Parses the selected options, converts to corresponding
-shell command, and executes it
-uses GNU find, grep and/or ?? for mimetype, content
+Parses the selected options and initiates search in a separate thread

 @param button clicked widget
@@ -2111,5 +2123,4 @@
 {
 	gchar *tmp2, *dlocal;
-	gint searchdepth;
 	findtargets data;

@@ -2121,27 +2132,6 @@
 	}

-#ifdef E2_VFS
-	VPATH sdata;
-#endif
-
 	//setup search parameters
 	_e2p_find_get_match_data (&data, rt);
-/*
-	data->content_only = (
-		data.contentop != ISNA
-		&& data.nameop == ISNA
-#ifdef MIMEFIND
-		&& data.mimeop == ISNA
-#endif
-		&& data.sizeop == ISNA
-		&& data.permop == ISNA
-		&& data.mtimop == ISNA
-		&& data.atimop == ISNA
-		&& data.ctimop == ISNA
-		&& data.userop == ISNA
-		&& data.groupop == ISNA
-		&& data.typeop == ISNA
-		);
-*/
 	if (
 		data.contentop == ISNA
@@ -2174,5 +2164,5 @@
 		dlocal = g_strdup (G_DIR_SEPARATOR_S);
 #ifdef E2_VFS
-		sdata.spacedata = curr_view->spacedata;
+		data.sdata.spacedata = curr_view->spacedata;
 #endif
 	}
@@ -2183,5 +2173,5 @@
 			 dlocal = D_FILENAME_TO_LOCALE (curr_view->dir);
 #ifdef E2_VFS
-			sdata.spacedata = curr_view->spacedata;
+			data.sdata.spacedata = curr_view->spacedata;
 #endif
 		}
@@ -2201,5 +2191,5 @@
 			dlocal = D_FILENAME_TO_LOCALE (tmp);
 #ifdef E2_VFS
-			sdata.spacedata = curr_view->spacedata;
+			data.sdata.spacedata = curr_view->spacedata;
 #endif
 		}
@@ -2209,52 +2199,76 @@
 			*tmp2 = '\0';
 #ifdef E2_VFS
-		sdata.localpath = dlocal;
+		data.sdata.localpath = dlocal;
 #endif
 	}
+#ifndef E2_VFS
+	data.localstartpath = dlocal;
+#endif

 	if (_e2p_find_get_flag (SEARCH_SUBDIRS_P))	//, rt))
-		searchdepth = -1;	//unlimited
+		data.searchdepth = -1;	//unlimited
 	else
-		searchdepth = 1;
+		data.searchdepth = 1;

-	if (rt == NULL)
-	{
 		g_static_rec_mutex_unlock (&find_mutex);
-		return;
-	}
-
-	//DO IT
+	rt->matchdata = ALLOCATE (findtargets);
+	CHECKALLOCATEDWARN (rt->matchdata, return;)
+	*rt->matchdata = data;
 	gtk_widget_set_sensitive (rt->help_button, FALSE);
 	gtk_widget_set_sensitive (rt->start_button, FALSE);
 	gtk_widget_set_sensitive (rt->stop_button, TRUE);
 	e2_dialog_set_cursor (rt->dialog, GDK_WATCH);
-	rt->matchdata = &data;
-	g_static_rec_mutex_unlock (&find_mutex);
+	//do it - separate thread allows the search to proceed without blocking the UI
+	pthread_attr_t attr;
+	pthread_attr_init (&attr);
+	pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
+	pthread_create (&rt->matchdata->findID, &attr, (gpointer) _e2p_find_dofind, rt);
+}
+/**
+ at brief thread function to perform search
+Uses grep and/or ?? for mimetype, content
+ at param rt ptr to search dialog data struct (in case of a bad race, rt could be NULL)
+
+ at return NULL
+*/
+static gpointer _e2p_find_dofind (E2_FindDialogRuntime *rt)
+{
+	if (rt == NULL)
+		return NULL;
+
+	pthread_cleanup_push ((gpointer)_e2p_find_cleanfind, (gpointer)rt);
+	pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
+	e2_utils_block_thread_signals ();	//block all allowed signals to this thread
+
+	findtargets *fdata = rt->matchdata;	//get a copy in case rt goes during search

-	gdk_threads_leave ();
 #ifdef TRACKERFIND
-	if (data.contentop == TRAK || data.typeop == TRAK)
+	if (fdata->contentop == TRAK || fdata->typeop == TRAK)
 	{	//tracker can't do place-specific matching
+		_e2p_find_tracker_find (
 #ifdef E2_VFS
-		_e2p_find_tracker_find (&sdata, searchdepth, &data);
+		fdata->sdata,
 #else
-		_e2p_find_tracker_find (dlocal, searchdepth, &data);
+		fdata->localstartpath,
 #endif
+		fdata->searchdepth, fdata);
 	}
 	else
 	{
 #endif
+		e2_fs_tw (
 #ifdef E2_VFS
-		e2_fs_tw (&sdata, _e2p_find_twcb, &data, searchdepth,
+		fdata->sdata,
 #else
-		e2_fs_tw (dlocal, _e2p_find_twcb, &data, searchdepth,
+		fdata->localstartpath,
 #endif
+		_e2p_find_twcb, fdata, fdata->searchdepth,
 			E2TW_XQT | E2TW_NODIR | E2TW_PHYS E2_ERR_NONE());

-		if (data.dirdata != NULL)
+		if (fdata->dirdata != NULL)
 		{	//cleanup chmod data left over after a stop or tw problem
 			GList *member;
 			E2_DirEnt *dirfix;
-			for (member = g_list_last (data.dirdata); member != NULL; member = member->prev)
+			for (member = g_list_last (fdata->dirdata); member != NULL; member = member->prev)
 			{
 				dirfix = (E2_DirEnt *)member->data;
@@ -2263,6 +2277,6 @@
 					E2_ERR_DECLARE;
 #ifdef E2_VFS
-					sdata.localpath = dirfix->path;
-					if (e2_fs_chmod (&sdata, dirfix->mode E2_ERR_PTR())
+					fdata->sdata.localpath = dirfix->path;
+					if (e2_fs_chmod (fdata->sdata, dirfix->mode E2_ERR_PTR())
 #else
 					if (e2_fs_chmod (dirfix->path, dirfix->mode E2_ERR_PTR())
@@ -2272,5 +2286,5 @@
 						e2_fs_error_local (_("Cannot change permissions of %s"),
 #ifdef E2_VFS
-								&sdata E2_ERR_MSGL());
+								fdata->sdata E2_ERR_MSGL());
 #else
 								dirfix->path E2_ERR_MSGL());
@@ -2281,5 +2295,5 @@
 				}
 			}
-			g_list_free (data.dirdata);
+			g_list_free (fdata->dirdata);
 		}
 #ifdef TRACKERFIND
@@ -2288,17 +2302,35 @@
 	gdk_threads_enter ();
 	e2_output_print_end (&app.tab, FALSE);
+	gdk_threads_leave ();

+	pthread_cleanup_pop (1);
+
+	return NULL;
+}
+/**
+ at brief post-thread cleanup function
+
+ at param rt ptr to search dialog data struct (in case of a bad race, rt could be NULL)
+
+ at return
+*/
+static void _e2p_find_cleanfind (E2_FindDialogRuntime *rt)
+{
+	printd (DEBUG, "cleanup after find thread finish");
 	g_static_rec_mutex_lock (&find_mutex);
 	if (rt != NULL)
 	{	//dialog not closed during the search
-		rt->matchdata = NULL;	//prevent misuse of data by cleanup function
+		findtargets *fdata = rt->matchdata;
+		rt->matchdata = NULL;	//minimise misuse of data by cleanup function
+		gdk_threads_enter ();
 		e2_dialog_set_cursor (rt->dialog, GDK_LEFT_PTR);
 		gtk_widget_set_sensitive (rt->help_button, TRUE);
 		gtk_widget_set_sensitive (rt->start_button, TRUE);
 		gtk_widget_set_sensitive (rt->stop_button, FALSE);
+		gdk_threads_leave ();
+		_e2p_find_clear_match_data (fdata);
+		DEALLOCATE (findtargets, fdata);
 	}
 	g_static_rec_mutex_unlock (&find_mutex);
-	g_free (dlocal);
-	_e2p_find_clear_match_data (&data);
 }
 /**
@@ -2312,4 +2344,5 @@
 static void _e2p_find_stop_find_cb (GtkWidget *w, E2_FindDialogRuntime *rt)
 {
+	pthread_cancel (rt->matchdata->findID);
 	rt->matchdata->aborted = TRUE;
 }
@@ -3495,4 +3528,8 @@
 	_e2p_find_make_notebook (dialog_vbox, find_rt);

+	//open at same page as last time
+	if (startpage > 0)
+		gtk_notebook_set_current_page (GTK_NOTEBOOK (find_rt->notebook), startpage);
+
 	//add buttons in the order that they will appear
 	find_rt->help_button =
@@ -3520,19 +3557,17 @@
 	e2_dialog_set_negative_response (find_rt->dialog, GTK_RESPONSE_CLOSE);

-	e2_dialog_setup (find_rt->dialog, app.main_window);
-	gtk_widget_show (find_rt->dialog);
-
+	gboolean state;
 	if (nocacheflags)
+	{	//no cached flags were used in this se
 		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (find_rt->active_button), TRUE);
-	gboolean state = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (find_rt->thisdir_button));
-	gtk_widget_set_sensitive (find_rt->directory, state);
-	//open at same page as last time
-	if (startpage > 0)
-		gtk_notebook_set_current_page (GTK_NOTEBOOK (find_rt->notebook), startpage);
-
-	if (nocacheflags)
+		state = FALSE;
 		nocacheflags = FALSE;	//from now on, use static/cached flag values
+	}
+	else
+		state = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (find_rt->thisdir_button));
+	gtk_widget_set_sensitive (find_rt->directory, state);

-	gtk_main ();
+	e2_dialog_setup (find_rt->dialog, app.main_window);
+	gtk_widget_show (find_rt->dialog);

 	return TRUE;
@@ -3567,5 +3602,5 @@
 		nocacheflags = !e2_cache_check ("find-plugin-flags");
 		if (nocacheflags)
-			//initialise flags
+			//initialise all flags to FALSE
 			//(some will be changed when specific widgets are created)
 			_e2p_find_reset_flags ();	//find_rt);
--- plugins/e2p_mvbar.c	2007-09-05 21:22:04.000000000 +1000
+++ plugins/e2p_mvbar.c	2007-12-01 08:19:41.000000000 +1100
@@ -923,6 +923,10 @@
 	g_string_free (src, TRUE);
 	g_string_free (dest, TRUE);
+#ifdef E2_FAM
 	e2_filelist_request_refresh (other_view->dir, FALSE);
 	e2_filelist_request_refresh (curr_view->dir, TRUE);
+#else
+	e2_filelist_check_dirty (GINT_TO_POINTER (1));
+#endif
 	e2_filelist_enable_refresh ();
 	return TRUE;
--- plugins/e2p_unpack.c	2007-11-27 09:02:18.000000000 +1100
+++ plugins/e2p_unpack.c	2007-12-01 08:19:41.000000000 +1100
@@ -142,6 +142,10 @@
 	//FIXME different refresh approach with E2_ASYNC
 	//in case a pane shows parent of temp dir
+#ifdef E2_FAM
 	e2_filelist_request_refresh (curr_view->dir, FALSE);
 	e2_filelist_request_refresh (other_view->dir, TRUE);
+#else
+	e2_filelist_check_dirty (GINT_TO_POINTER (1));
+#endif
 	return FALSE;
 }
--- src/dialogs/e2_config_dialog.c	2007-11-15 22:51:21.000000000 +1100
+++ src/dialogs/e2_config_dialog.c	2007-12-01 08:19:41.000000000 +1100
@@ -550,11 +550,13 @@
 		e2_option_enable_config_checks ();
 		//may need to show the revised config file data
-		//FIXME this may cause crash
-//		if (!(buildflags & (E2_OPTION_FLAG_BUILDALL | E2_OPTION_FLAG_BUILDPANES)))
-//			e2_filelist_check_dirty (GINT_TO_POINTER(1));
-/*BETTER ?
+/*	FIXME this may cause crash
+		if (!(buildflags & (E2_OPTION_FLAG_BUILDALL | E2_OPTION_FLAG_BUILDPANES)))
 		{
+#ifdef E2_FAM
 			e2_filelist_request_refresh (curr_view->dir, FALSE);
 			e2_filelist_request_refresh (other_view->dir, TRUE);
+#else
+			e2_filelist_check_dirty (GINT_TO_POINTER(1));
+#endif
 		}
 */
--- src/dialogs/e2_view_dialog.c	2007-11-23 08:43:27.000000000 +1100
+++ src/dialogs/e2_view_dialog.c	2007-11-30 19:58:11.000000000 +1100
@@ -1695,10 +1695,10 @@
 @brief open file for viewing, at a location where there is a specified string
 @a art includes a string with filepath and an argument that is a text string
-to find in the file
+to find in the file. Separator between path and find-target is the first unquoted
+unescaped ' ' char (not a \t)
 This returns immediately, so if run in a Q-thread, that will end
-NOTE expects no whitespace in the actual path string
 @param from the widget that was activated to initiate the action
 @param art runtime data for the action
- at return TRUE
+ at return TRUE if dialog was created
 */
 static gboolean _e2_view_dialog_openat (gpointer from, E2_ActionRuntime *art)
@@ -1711,10 +1711,10 @@
 	//for a help doc, has localised doc path, and a "[title]" arg in undefined encoding
 	gchar *view_this = (gchar *) qed->rt_data;
-	gchar c;
+//	gchar c;
 	//strip off any arg FIXME doc path may have whitespace
-	gchar *target = e2_utils_find_whitespace (view_this);	//always ascii ' ', don't need g_utf8_strchr()
+	gchar *target = e2_utils_bare_strchr (view_this, ' ');	//always ascii ' ', don't need g_utf8_strchr()
 	if (target != NULL)
 	{
-		c = *target;
+//		c = *target;
 		*target = '\0';
 	}
@@ -1723,5 +1723,5 @@
 #endif
 	E2_ViewDialogRuntime *vrt;
-	gdk_threads_enter ();
+	gdk_threads_enter ();	//dialog setup wants BGL closed
 	GtkWidget *dialog = _e2_view_dialog_create
 #ifdef E2_VFS
@@ -1733,5 +1733,6 @@

 	if (target != NULL)
-		*target = c;	//revert the argument, ready for next time
+//		*target = c;	//revert the argument, ready for next time
+		*target = ' ';	//revert the argument, ready for next time

 	if (dialog != NULL)
@@ -1743,23 +1744,19 @@
 			GtkTextIter iter, start, end;
 			gtk_text_buffer_get_start_iter (vrt->textbuffer, &iter);
-			gdk_threads_enter ();
 			if (gtk_text_iter_forward_search (&iter, target, 0, &start, &end, NULL))
 			{	//need to add a mark to get the scroll to work properly
+				//FIXME sometimes it scrolls a bit too far
 				GtkTextMark *mark = gtk_text_buffer_create_mark
 					(vrt->textbuffer, NULL, &start, FALSE);
-				//FIXME with ASYNC, it does not always scroll to the correct place
-				gdk_threads_leave ();
-				usleep (20000);	//pause a while for gtk to do its setups ?
+				WAIT_FOR_EVENTS_UNLOCKED
 				gdk_threads_enter ();
-
-				gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (vrt->textview), mark,
-					0.0, TRUE, 0.0, 0.1);
 				//to support incremental searching, move the cursor
 				//to the start of the located string
 				gtk_text_buffer_place_cursor (vrt->textbuffer, &start);
-			}
+				gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (vrt->textview), mark,
+					0.0, TRUE, 0.0, 0.2);
 			gdk_threads_leave ();
 		}
-		WAIT_FOR_EVENTS_UNLOCKED_SLOWLY
+		}
 		gdk_threads_enter ();
 		e2_dialog_show (dialog, app.main_window, E2_DIALOG_DONT_SHOW_ALL,
@@ -1767,6 +1764,7 @@
 		gtk_window_present (GTK_WINDOW (dialog));
 		gdk_threads_leave ();
-	}
 	return TRUE;
+	}
+	return FALSE;
 }

--- src/e2_filelist.c	2007-11-29 08:13:08.000000000 +1100
+++ src/e2_filelist.c	2007-12-01 08:19:41.000000000 +1100
@@ -563,11 +563,17 @@
 	gboolean localcfgdirty;	//use a local copy so that the extern value doesn't get cleared before it's noticed
 	extern gboolean cfgdirty;
-#endif

-#ifdef E2_FAM
 	if (userdata != NULL
 		 && app.monitor_type != E2_MONITOR_DEFAULT)
 			g_usleep (E2_FAMWAIT);	//wait for things to be noticed
 #endif
+
+#ifndef E2_FAM
+	if (userdata != NULL)
+	{
+		p1dirty = p2dirty = TRUE;	//force a refresh
+	}
+	else
+#endif
 	//this reports 'gone' as 'dirty', and then the list-refesh
 	//function handles choosing a replacement dir
--- src/e2_fileview.c	2007-11-27 09:02:18.000000000 +1100
+++ src/e2_fileview.c	2007-12-01 08:19:41.000000000 +1100
@@ -1448,5 +1448,5 @@
 //					gtk_tree_selection_select_iter (view->selection, &iter);
 //					if (success)
-//						e2_filelist_request_refresh (view->dir, TRUE);
+//						e2_filelist_request_refresh (view->dir, TRUE); CHECKME ok without E2_FAM ?
 				}
 				F_FREE (old);
@@ -4133,6 +4133,4 @@
 			//walk current FileInfo's, deleting as we go, logging any that are changed
 			//(there will always be at least one entry, "..")
-			gdk_threads_enter ();	//for some reason, doing this once works better
-									//than if done for each removed iter, for gtk 2.12
 			gtk_tree_model_get_iter_first (mdl, &iter);
 			do
@@ -4177,5 +4175,8 @@
 				else
 				{	//current item is not hashed i.e. gone from dir
-					if (gtk_list_store_remove (view->store, &iter))	//needs BGL closed
+					gdk_threads_enter ();
+					gboolean more = gtk_list_store_remove (view->store, &iter);
+					gdk_threads_leave ();
+					if (more)
 						goto loopstart; //prevent double-iter-next, i unchanged
 					else
@@ -4183,5 +4184,5 @@
 				}
 			} while (gtk_tree_model_iter_next (mdl, &iter));
-			gdk_threads_leave ();
+
 			//tag any additions, and clean up redundant FileInfos to prevent leakage
 			for (i = 0; i < itemcount; i++)
@@ -4190,5 +4191,4 @@
 				{
 					modes [i].newindx = newindx++;	//this will match the store index when created
-//					FileInfo *debug = (FileInfo *) g_list_nth_data (entries, i);
 					updates = g_list_append (updates, g_list_nth_data (entries, i));
 				}
@@ -4212,5 +4212,4 @@
 					gtk_tree_sortable_set_sort_column_id (sortable,
 						GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID, GTK_SORT_ASCENDING);
-					gdk_threads_enter ();	//not disconnecting model, so UI may be updated here
 //this kills the current selection, no evident way to prevent that
 //					gtk_tree_view_set_model (GTK_TREE_VIEW (view->treeview), NULL);
@@ -4246,5 +4245,5 @@
 									&iter, FINFO, &currinfoptr, -1);
 								//simply replace all changeable contents
-							//gdk_threads_enter ();
+								gdk_threads_enter ();
 								gtk_list_store_set (view->store, &iter,
 									SIZE, size,
@@ -4257,5 +4256,5 @@
 									FORECOLOR, foreground,	//maybe changed executable status
 									-1);
-								//gdk_threads_leave ();
+								gdk_threads_leave ();
 								//copy this so original can be cleared
 								currinfoptr->statbuf = newinfoptr->statbuf;
@@ -4277,5 +4276,5 @@
 									*currinfoptr = *newinfoptr;
 //gtk >= 2.10 can handle &iter = NULL
-									//gdk_threads_enter ();
+									gdk_threads_enter ();
 									gtk_list_store_insert_with_values (view->store, &iter, -1,
 										FILENAME, name,
@@ -4291,5 +4290,5 @@
 										FORECOLOR, foreground,
 										-1);
-									//gdk_threads_leave ();
+									gdk_threads_leave ();
 								}
 							}
@@ -4305,11 +4304,9 @@
 						}
 					}
-//			printd (DEBUG, "re-sort current store");
+					gdk_threads_enter ();
 					//re-sort the view using the current sort column & direction
 					gtk_tree_sortable_set_sort_column_id (sortable, view->sort_column,
 						view->sort_order);
-//			printd (DEBUG, "re-filter current store");
 					e2_fileview_refilter_list (view);
-
 					gdk_threads_leave ();
 //					g_idle_add ((GSourceFunc)_e2_fileview_run_hooks, view);
@@ -4326,9 +4323,7 @@
 				//no data free, the data are same as entries list data
 				g_list_free (updates);	//the store is enough for other view ? FIXME idle ?
-				view->total_items = gtk_tree_model_iter_n_children
-					(GTK_TREE_MODEL (view->store), NULL) - 1; //omit the ".." entry from the count
 			}
-			else	//this is normally done in e2_fileview_refilter_list()
-			{
+			else	//updates = NULL
+			{	//this is normally done in e2_fileview_refilter_list()
 //				printd (DEBUG, "no need to update any item still in filelist");
 				if (view->row > 0)
@@ -4352,4 +4347,7 @@
 			}

+			view->total_items = gtk_tree_model_iter_n_children
+				(GTK_TREE_MODEL (view->store), NULL) - 1; //omit the ".." entry from the count
+
 			g_hash_table_destroy (newlookup);	//CHECKME better at idle ?

@@ -4380,5 +4378,5 @@
 	gdk_threads_leave ();
 	e2_filelist_enable_one_refresh (pnum);
-	printd (DEBUG, "finish refresh filelist for %s", view->dir);
+//	printd (DEBUG, "finish refresh filelist for %s", view->dir);
 	return GINT_TO_POINTER (1);	//normal exit, no more refresh
 }
--- src/e2_task.c	2007-11-29 08:56:36.000000000 +1100
+++ src/e2_task.c	2007-12-01 08:19:41.000000000 +1100
@@ -990,4 +990,5 @@
 {
 //	printd (DEBUG, "initiate refresh of both filelists");
+#ifdef E2_FAM
 	gchar *utf;
 	utf = F_FILENAME_FROM_LOCALE (qed->currdir);
@@ -997,4 +998,7 @@
 	e2_filelist_request_refresh (utf, TRUE);
 	F_FREE (utf);
+#else
+	e2_filelist_check_dirty (GINT_TO_POINTER (1));
+#endif
 }
 /**
@@ -1008,5 +1012,6 @@
 gboolean e2_task_refresh (gpointer from, E2_ActionRuntime *art)
 {
-#ifdef E2_VFSTMPOK
+#ifdef E2_FAM
+# ifdef E2_VFSTMP
 	gboolean withother = other_view->spacedata == NULL || other_view->spacedata->monitored;
 	gboolean retval =
@@ -1015,10 +1020,14 @@
 	if (withother)
 		retval = e2_filelist_request_refresh (other_view->dir, TRUE) && retval;
-#else
+# else
 	//2 tests, to lessen race due to dir-swap during first call
 	gboolean retval = e2_filelist_request_refresh (curr_view->dir, FALSE);
 	retval = e2_filelist_request_refresh (other_view->dir, TRUE) || retval;
-#endif
+# endif
 	return retval;
+#else
+	e2_filelist_check_dirty (GINT_TO_POINTER (1));
+	return TRUE;
+#endif
 }
 /**
--- src/utils/e2_hook.c	2007-11-20 09:28:30.000000000 +1100
+++ src/utils/e2_hook.c	2007-11-29 21:17:23.000000000 +1100
@@ -122,4 +122,5 @@
 {
 //	printd (DEBUG, "e2_hook_list_run (hook_list: %x,data: %x)", hook_list, data);
+	if (hook_list->is_setup)
 	g_hook_list_marshal_check (hook_list, FALSE, _e2_hook_list_run, data);
 }
--- src/utils/e2_menu.c	2007-11-29 08:13:08.000000000 +1100
+++ src/utils/e2_menu.c	2007-12-01 08:19:41.000000000 +1100
@@ -762,6 +762,10 @@
 	if (newstate) //doing a mount
 	{
+#ifdef E2_FAM
 		e2_filelist_request_refresh (curr_view->dir, FALSE);
 		e2_filelist_request_refresh (other_view->dir, TRUE);
+#else
+		e2_filelist_check_dirty (GINT_TO_POINTER (1));
+#endif
 	}
 	else	//doing an unmount


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/emelfm2/F-8/.cvsignore,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- .cvsignore	29 Jul 2007 00:18:21 -0000	1.14
+++ .cvsignore	2 Dec 2007 20:34:34 -0000	1.15
@@ -1 +1 @@
-emelfm2-0.3.5.tar.gz
+emelfm2-0.3.6.tar.gz

emelfm2-makefile.config.patch:

Index: emelfm2-makefile.config.patch
===================================================================
RCS file: /cvs/pkgs/rpms/emelfm2/F-8/emelfm2-makefile.config.patch,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- emelfm2-makefile.config.patch	7 Jun 2007 11:54:57 -0000	1.6
+++ emelfm2-makefile.config.patch	2 Dec 2007 20:34:34 -0000	1.7
@@ -1,6 +1,6 @@
---- Makefile.config.orig	2007-05-13 04:39:01.000000000 +0200
-+++ Makefile.config	2007-06-06 23:47:04.000000000 +0200
-@@ -12,7 +12,7 @@
+--- Makefile.config.orig	2007-11-29 01:37:49.000000000 +0100
++++ Makefile.config	2007-12-02 19:35:22.000000000 +0100
+@@ -15,7 +15,7 @@
  ### documentation ###
  #####################
  # setting this to 1 makes the default docs dir include the current version no.
@@ -9,16 +9,25 @@
  
  #the name of the default main-user-guide document
  HELPDOC ?= USAGE
-@@ -58,7 +58,7 @@
+@@ -44,7 +44,7 @@
+ # setting this to 1 enables setting window-transparency for e2
+ # (i.e. independent of window-manager settings)
+ # ignored unless built for gtk >= 2.12, so also need USE_LATEST=1
+-WITH_TRANSPARENCY ?= 0
++WITH_TRANSPARENCY ?= 1
+ 
+ # GLib and GTK+ by default assume that filenames are
+ # encoded in utf-8 (or ascii which is compatible with utf-8).
+@@ -73,7 +73,7 @@
  # (volunteer needed to test and finalise)
  # portevent-usage (on solaris) is a TODO
  # (volunteer needed to work on that)
 -WITH_KERNELFAM ?= 0
 +WITH_KERNELFAM ?= 1
  
- # setting this to 1 provides support (on linux) for file-change monitoring
- # using inotify if that's available, or normal polling if not available
-@@ -100,12 +100,12 @@
+ # Enable NO MORE THAN ONE of these monitors.
+ 
+@@ -117,12 +117,12 @@
  
  # setting this to 1 includes code (not much) that is applicable only
  # to Gtk versions > 2.6, if the build-system has any such Gtk
@@ -26,10 +35,19 @@
 +USE_LATEST ?= 1
  
  # setting this to 1 utilises replacement code for command execution. It's known
- # to work reasonably for some (most ?) OS's, but NOT for linux 2.4 (though it's
- # not fatal for that, just wasteful of CPU cycles)
+ # to work reasonably for some (most ?) OS's, but needs further evaluation on linux 2.4
+ # (though if it's still a problem there, it's not fatal, just wasteful of CPU cycles)
 -NEW_COMMAND ?= 0
 +NEW_COMMAND ?= 1
  
- # setting this to 1 enables a thumbnail viewer plugin. This uses libgimpthumbnail
- # for managing thumbnail-file cacheing in accord with freedesktop.org specification.
+ # setting this to 1 enables a thumbnail viewer plugin. This uses libgimpthumb for
+ # managing thumbnail-file cacheing in accord with freedesktop.org specification.
+@@ -138,7 +138,7 @@
+ # setting this to 1 enables an Access-Control-List-management plugin. This uses
+ # libacl - with a reasonably full (sort-of POSIX) API.
+ # Corresponding development files are needed for building the plugin
+-WITH_ACL ?= 0
++WITH_ACL ?= 1
+ 
+ # setting this to 1 enables a VFS plugin. This uses gvfs capabilities, and so needs
+ # libgio etc and glib >= 2.14


Index: emelfm2.spec
===================================================================
RCS file: /cvs/pkgs/rpms/emelfm2/F-8/emelfm2.spec,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- emelfm2.spec	22 Aug 2007 22:31:04 -0000	1.24
+++ emelfm2.spec	2 Dec 2007 20:34:34 -0000	1.25
@@ -1,6 +1,6 @@
 Name:           emelfm2
-Version:        0.3.5
-Release:        2%{?dist}
+Version:        0.3.6
+Release:        1%{?dist}
 Summary:        A file manager that implements the popular two-pane design
 
 Group:          Applications/File
@@ -8,10 +8,10 @@
 URL:            http://emelfm2.net/
 Source0:        http://emelfm2.net/rel/emelfm2-%{version}.tar.gz
 Patch0:         emelfm2-makefile.config.patch
+Patch1:         e2-0.3.6-07-12-01.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
-BuildRequires:  gtk2-devel >= 2.6.0, gettext, desktop-file-utils
-#BuildRequires:  gamin-devel
+BuildRequires:  gtk2-devel >= 2.6.0, libacl-devel, gettext, desktop-file-utils
 Requires:       findutils >= 4.2, file, grep, sed
 
 %description
@@ -22,6 +22,7 @@
 
 %prep
 %setup -q
+%patch1 -p0 -b .0.3.6
 %patch0 -p0 -b .orig
 
 # fix for x86_64 libs
@@ -31,9 +32,8 @@
 sed -i 's!emelfm2/emelfm2_48.png!%{_datadir}/pixmaps/emelfm2/emelfm2_48.png!' docs/desktop_environment/%{name}.desktop
 
 %build
-#echo $RPM_OPT_FLAGS
-#export CFLAGS="${RPM_OPT_FLAGS}"
-#echo $CFLAGS
+# make clean is needed because of e2-0.3.6-07-12-01.patch
+make clean
 make %{?_smp_mflags} \
     OPTIMIZE="${RPM_OPT_FLAGS}" \
     CFLAGS="${RPM_OPT_FLAGS}" \
@@ -72,6 +72,10 @@
 
 	
 %changelog
+* Sun Dec 02 2007 Christoph Wickert <fedora christoph-wickert de> - 0.3.6-1
+- Update 0.3.6 with upstream's e2-0.3.6-07-12-01.patch
+- Enable the ACL plugin
+
 * Tue Aug 21 2007 Christoph Wickert <fedora christoph-wickert de> - 0.3.5-2
 - Rebuild to fix SELinux issues on PPC32 and to include BuildID feature
 


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/emelfm2/F-8/sources,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- sources	29 Jul 2007 00:18:21 -0000	1.14
+++ sources	2 Dec 2007 20:34:34 -0000	1.15
@@ -1 +1 @@
-4f5a065a7d35371a920533153f24e362  emelfm2-0.3.5.tar.gz
+cc00361a117e48823bf5bd7da5d729e0  emelfm2-0.3.6.tar.gz




More information about the fedora-extras-commits mailing list