Existing algorithms for clipping line segments against a concave polygon always need to compute all edges, resulting in a time complexity *O*(*n*) for computing intersection points, where *n* is the number of edges of the clipping polygon. This paper presents a new algorithm that first separates polygon edges into convex polylines and then clips lines against them, where a *convex polyline* is a sequence of edges that can form a convex polygon by themselves. As a result, the time complexity for computing intersection points is reduced, varying adaptively between *O*(log *n*) and *O*(*n*), and is lower than *O*(*n*) in most cases. To further improve clipping efficiency the new algorithm is combined with an axis-aligned BSP tree that is used to manage convex polylines for quickly finding convex polylines that might intersect the clipped lines. Examples show that the new algorithm can be several times faster than existing algorithms for line clipping.