Mercurial > mplayer.hg
view debian/rules @ 30795:1001c606f94c
Make emulated Win32 critical sections thread safe.
Earlier, cs->locked was accessed outside the mutex to get around
the problem that default pthread mutexes are not recursive
(ie., you cannot do a double-lock from the same thread), causing
a thread-safety problem, as both detected by Helgrind and showing
up in some multithreaded codecs.
The ideal solution here would be to simply use recursive pthread
mutexes, but there were concerns about reduced debuggability and
possibly portability. Thus, instead, rewrite the critical sections
to be a simple lock count (with owner) protected by a regular mutex.
Whenever a thread wants to enter the critical section and lock_count
is not 0, it sleeps on a special event that tells it when the
critical section is available.
author | sesse |
---|---|
date | Thu, 04 Mar 2010 15:57:08 +0000 |
parents | ba2cb7c23fa2 |
children |
line wrap: on
line source
#!/usr/bin/make -f # Made with the aid of debmake, by Christoph Lameter, # based on the sample debian/rules file for GNU hello by Ian Jackson. #export DH_VERBOSE=1 # This is the debhelper compatability version to use. export DH_COMPAT=4 package := mplayer prefix := $(shell pwd)/debian/$(package) arch := $(shell dpkg --print-architecture) # See http://wiki.debian.org/Teams/Dpkg/DebianRules; #465282 and # https://wiki.ubuntu.com/DistCompilerFlags CLEAN_ENV=env -u CFLAGS -u CPPFLAGS -u LDFLAGS -u FFLAGS -u CXXFLAGS configure: configure-stamp configure-stamp: dh_testdir # Add here commands to configure the package. $(checkdir) # If you plan to install the target .deb on a wide variety of machines, # you may want to add the "--enable-runtime-cpudetection" option to # the line below, but beware: the resulting binary will run slower $(CLEAN_ENV) \ ./configure --prefix=/usr --confdir=/etc/mplayer $(DEB_BUILD_OPTIONS) touch configure-stamp build: configure-stamp build-stamp build-stamp: dh_testdir # commands to compile the package. $(CLEAN_ENV) \ ${MAKE} touch build-stamp clean: dh_testdir dh_testroot rm -f build-stamp configure-stamp # commands to clean up after the build process. -$(MAKE) distclean rm -f help_mp.h config.h config.mak dh_clean # Build architecture-independent files here. binary-indep: build # We have nothing to do by default. # Build architecture-dependent files here. binary-arch: build dh_testdir dh_testroot dh_clean -k dh_installdirs # commands to install the package into debian/<packagename> $(MAKE) prefix=$(prefix)/usr BINDIR=$(prefix)/usr/bin CONFDIR=$(prefix)/etc/mplayer LIBDIR=$(prefix)/usr/lib DATADIR=$(prefix)/usr/share/mplayer MANDIR=$(prefix)/usr/share/man install dh_link usr/bin/mplayer usr/bin/gmplayer \ usr/share/man/man1/mplayer.1.gz usr/share/man/man1/gmplayer.1.gz dh_installdebconf dh_installdocs -X.svn -Xmplayer.1 DOCS/* dh_installexamples etc/example.conf etc/dvb-menu.conf etc/input.conf etc/menu.conf dh_installmenu dh_installmime dh_installinfo dh_installchangelogs #ChangeLog dh_link dh_strip dh_compress dh_fixperms dh_makeshlibs dh_installdeb dh_perl dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb #binary-arch: checkroot build # $(checkdir) # -rm -rf debian/tmp # install -d debian/tmp # cd debian/tmp && install -d `cat ../dirs` # Must have debmake installed for this to work. Otherwise please copy # /usr/bin/debstd into the debian directory and change debstd to debian/debstd # debstd # dpkg-gencontrol -isp # chown -R root.root debian/tmp # chmod -R go=rX debian/tmp # dpkg --build debian/tmp .. binary: binary-indep binary-arch .PHONY: binary binary-arch binary-indep clean checkroot