Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=62f5fdace7774a45e75e4d651237e7e1e8f05327
Commit:     62f5fdace7774a45e75e4d651237e7e1e8f05327
Parent:     1bde02891b3d4d17ee743584bb49ed5f275dff01
Author:     Mike Isely <[EMAIL PROTECTED]>
AuthorDate: Wed Dec 27 23:33:00 2006 -0300
Committer:  Mauro Carvalho Chehab <[EMAIL PROTECTED]>
CommitDate: Wed Feb 21 13:34:33 2007 -0200

    V4L/DVB (5052): Pvrusb2: Remove stream claiming hack from /dev/radio
    
    Trying to temporarily check that the stream is not claimed during open
    of the radio device is at best a race condition.  What's to stop
    another app from claiming the stream anyway the instant after the
    check is done?  The implementation for this was dicey anyway.  So it's
    removed.  The only "price" for this is that if /dev/radioX is opened
    while streaming video, then the video stream is just going to switch
    to radio mode anyway.  If a user does this, he gets what he expects...
    
    Signed-off-by: Mike Isely <[EMAIL PROTECTED]>
    Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>
---
 drivers/media/video/pvrusb2/pvrusb2-context.c |   11 ----------
 drivers/media/video/pvrusb2/pvrusb2-context.h |    2 -
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c    |   27 +++++-------------------
 3 files changed, 6 insertions(+), 34 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-context.c 
b/drivers/media/video/pvrusb2/pvrusb2-context.c
index 69786cd..cf12974 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-context.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-context.c
@@ -188,17 +188,6 @@ void pvr2_channel_done(struct pvr2_channel *cp)
 }
 
 
-int pvr2_channel_check_stream_no_lock(struct pvr2_channel *cp,
-                             struct pvr2_context_stream *sp)
-{
-       if (sp == cp->stream) return 0;
-       if (sp->user) {
-               return -EBUSY;
-       }
-       return 0;
-}
-
-
 int pvr2_channel_claim_stream(struct pvr2_channel *cp,
                              struct pvr2_context_stream *sp)
 {
diff --git a/drivers/media/video/pvrusb2/pvrusb2-context.h 
b/drivers/media/video/pvrusb2/pvrusb2-context.h
index 4d0f4ad..6327fa1 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-context.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-context.h
@@ -76,8 +76,6 @@ void pvr2_channel_init(struct pvr2_channel *,struct 
pvr2_context *);
 void pvr2_channel_done(struct pvr2_channel *);
 int pvr2_channel_claim_stream(struct pvr2_channel *,
                              struct pvr2_context_stream *);
-int pvr2_channel_check_stream_no_lock(struct pvr2_channel *,
-                             struct pvr2_context_stream *);
 struct pvr2_ioread *pvr2_channel_create_mpeg_stream(
        struct pvr2_context_stream *);
 
diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index f747279..cc3260f 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -925,29 +925,14 @@ static int pvr2_v4l2_open(struct inode *inode, struct 
file *file)
                pvr2_trace(PVR2_TRACE_STRUCT,"Creating pvr_v4l2_fh id=%p",fhp);
                pvr2_channel_init(&fhp->channel,vp->channel.mc_head);
 
-               /* pk: warning, severe ugliness follows. 18+ only.
-                  please blaim V4L(ivtv) for braindamaged interfaces,
-                  not the implementor. This is probably flawed, but
-                  suggestions on how to do this "right" are welcome! */
+               /* Opening the /dev/radioX device implies a mode switch.
+                  So execute that here.  Note that you can get the
+                  IDENTICAL effect merely by opening the normal video
+                  device and setting the input appropriately. */
                if (dip->config == pvr2_config_radio) {
-                       int ret;
-                       if ((pvr2_channel_check_stream_no_lock(&fhp->channel,
-                                             fhp->dev_info->stream)) != 0) {
-                               /* We can 't switch modes while streaming */
-                               pvr2_channel_done(&fhp->channel);
-                               kfree(fhp);
-                               pvr2_context_exit(vp->channel.mc_head);
-                               return -EBUSY;
-                       }
-
-                       if ((ret = pvr2_ctrl_set_value(
+                       pvr2_ctrl_set_value(
                                pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_INPUT),
-                                                 PVR2_CVAL_INPUT_RADIO))) {
-                               pvr2_channel_done(&fhp->channel);
-                               kfree(fhp);
-                               pvr2_context_exit(vp->channel.mc_head);
-                               return ret;
-                       }
+                               PVR2_CVAL_INPUT_RADIO);
                }
 
                fhp->vnext = NULL;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to