firefox & flash9 patches

Tijl Coosemans tijl at ulyssis.org
Wed Oct 1 16:38:53 UTC 2008


On Monday 29 September 2008 22:02:37 Chagin Dmitry wrote:
> please, test following patches (just -current).
> with them firefox && flash9 forks for me,
> I tested only on ia32 at amd64 with 2.6.16 enabled,
> firefox 2.0.0.16 and flash9 plugin.
> 
> If all is good, I will ask des@ and kib@ to review&commit them. thnx!

On 7.1-PRERELEASE, linux 2.4, fc4, the linprocfs patch seems to improve
things a lot. I'm still having crashes from time to time, but overall
flash9 works much better. Great work!

I've attached the patch for RELENG_7 (patch-linprocfs) and another
patch for libflashsupport [1]. It should improve OSS support, A/V sync
etc. For those without a linux box, I've attached a compiled version of
the lib as well. You can drop it in /compat/linux/usr/lib.

[1] http://sourceforge.net/projects/flashsupport/
-------------- next part --------------
--- linprocfs.c.orig	2008-10-01 17:47:51.000000000 +0200
+++ linprocfs.c	2008-10-01 17:49:02.000000000 +0200
@@ -869,14 +869,12 @@
 static int
 linprocfs_doprocmaps(PFS_FILL_ARGS)
 {
-	char mebuffer[512];
 	vm_map_t map = &p->p_vmspace->vm_map;
 	vm_map_entry_t entry, tmp_entry;
 	vm_object_t obj, tobj, lobj;
 	vm_offset_t saved_end;
 	vm_ooffset_t off = 0;
 	char *name = "", *freename = NULL;
-	size_t len;
 	ino_t ino;
 	unsigned int last_timestamp;
 	int ref_count, shadow_count, flags;
@@ -894,13 +892,9 @@
 	if (uio->uio_rw != UIO_READ)
 		return (EOPNOTSUPP);
 
-	if (uio->uio_offset != 0)
-		return (0);
-
 	error = 0;
 	vm_map_lock_read(map);
-	for (entry = map->header.next;
-	    ((uio->uio_resid > 0) && (entry != &map->header));
+	for (entry = map->header.next; entry != &map->header;
 	    entry = entry->next) {
 		name = "";
 		freename = NULL;
@@ -949,7 +943,7 @@
 		 * format:
 		 *  start, end, access, offset, major, minor, inode, name.
 		 */
-		snprintf(mebuffer, sizeof mebuffer,
+		error = sbuf_printf(sb,
 		    "%08lx-%08lx %s%s%s%s %08lx %02x:%02x %lu%s%s\n",
 		    (u_long)entry->start, (u_long)entry->end,
 		    (entry->protection & VM_PROT_READ)?"r":"-",
@@ -965,18 +959,11 @@
 		    );
 		if (freename)
 			free(freename, M_TEMP);
-		len = strlen(mebuffer);
-		if (len > uio->uio_resid)
-			len = uio->uio_resid; /*
-					       * XXX We should probably return
-					       * EFBIG here, as in procfs.
-					       */
 		last_timestamp = map->timestamp;
 		vm_map_unlock_read(map);
-		error = uiomove(mebuffer, len, uio);
+		if (error == -1)
+			return (0);
 		vm_map_lock_read(map);
-		if (error)
-			break;
 		if (last_timestamp + 1 != map->timestamp) {
 			/*
 			 * Look again for the entry because the map was
-------------- next part --------------
A non-text attachment was scrubbed...
Name: libflashsupport.so
Type: application/octet-stream
Size: 44856 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-emulation/attachments/20081001/3194e994/libflashsupport.so


More information about the freebsd-emulation mailing list